npm 在前端工程化中扮演着不可或缺的角色,前端工程师每天通过npm安装项目依赖,通过npm发布自己的包,更新包,通过npm 脚本运行开发环境,打包等。

平时专注于实现业务,一直没有去了解一款包的发布流程,忙里偷闲,今天就体验下编写并发布一个package的过程,记录下来分享给大家。

一个包诞生的过程无非是:编写-测试-发布-迭代-测试-发布...,

初始化项目

mkdir math-tool_demo 新建文件夹

npm init初始化package.json文件,根据提示输入项目信息:

  • package name项目名
  • version 版本
  • description 描述
  • entry point 入口文件
  • test command 测试命令
  • git repository git仓库地址
  • keywords 关键字信息
  • author 作者
  • 协议等

npm init -y:添加 -y 标志,直接默认生成.

编写包里的代码

包含的功能:我们实现一个加减乘除的小工具。

新建index.js入口文件

module.exports = {
  add:add,
  minus:minus
}
function add(num1,num2) {
  if(typeof num1 === 'number' && typeof num2 === 'number'){
    return num1   num2;
  }else{
    throw('arguments must be number')
  }
  
}
function minus(left,right){
  if(typeof left === 'number' && typeof right === 'number'){
    return left - right;
  }else{
    throw('arguments must be number')
  }
}

测试

测试无非就是引入编写的模块,并运行测试用例,此处不再多说。

发布

npm login 登录。输入账户密码邮箱,如果你没有账户,先申请:链接。

 

npm publish:发布编写的包

失败:命名重复或类似: 修改一下包名。

再次发布:npm publish:成功了!默认版本为1.0.0

如何迭代发布的包

包发布出去了,bug是无法避免的,当然作者也会考虑扩展功能,修复bug或功能迭代需要将代码修改同步到远程仓库。

修改代码

比如做出了下述的修改:

module.exports = {
  add:add,
  minus:minus
}
function add() {
  var left = arguments[0];
  var right = arguments[1];
  if(typeof left === 'number' && typeof right === 'number'){
    return left   right;
  }else{
    throw('arguments must be number')
  }
  
}
function minus(){
  var left = arguments[0];
  var right = arguments[1];
  if(typeof left === 'number' && typeof right === 'number'){
    return left - right;
  }else{
    throw('arguments must be number')
  }
}

修改版本号

我们可以直接改package.json里的version字段值.

不过最好还是使用npm 提供的命令修改版本号(比如当前为v1.0.0):

  • npm version patch-->1.0.1:属于小修改,不更改功能使用
  • npm version minor-->1.1.0:可能添加了一些功能,不影响以前的使用。
  • npm version major-->2.0.0:可能改了API,输入大范围的修改。

详细移步:关于npm语义版本

发布

npm publish

如何使用发布的包

  • 到npm仓库搜索包名
  • 然后,输入npm install packageName -S [-D ]分别作为依赖或开发依赖

下面以我们刚发布的包为例:

首次使用该包
npm install -S math-tool_demo 安装刚刚发布的包

在index.js里引入并使用:

var math = require('math-tool_demo')
var addRes = math.add(1,2);
var minusRes = math.minus(1,2);

console.log(
  addRes,
  minusRes,
)//输出:3,-1

正在使用,该包可能已经迭代更新

npm outdated检查每个定义在项目package.json中包在远程仓库是否有新版本

发现有新版本,目前使用的是1.0.0,最新的是2.0.0。

npm update [packageName]更新包

敲完,发现没反应,并没有更新包。

查看package.json中包的依赖定义

有三种版本定义:

  • 直接写准确的版本号:比如:1.0.0
  • 大版本不动,有功能更新则用新版本:^1.0.0
  • 更保守一点,只能小幅更新如bug修复等:~1.0.0

^1.0.0意为>=1.0.0 < 1.2.0

~1.0.0意为>=1.0.0 < 1.1.0

因此更新到2.0.0的是不允许的,只能手动更改package.json中的版本号,并更新了。

为何弄成这样?因为第一个数字意味着major改动,贸然的更新可能会带来无法预计的后果

传送门:npm-outdated,npm-update

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

发布一款npm包帮助理解npm的使用的更多相关文章

  1. 详解如何构建一个Angular6的第三方npm包

    这篇文章主要介绍了详解如何构建一个Angular6的第三方npm包,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. JSP 2.1和JSF 1.2规范发布预览版本

    J2EE的两种重要的表现层技术JSP和JSF发布了新技术规范的预览版本,其中最重要的一点是两者将表达式语言部分合二为一。更改的JSP规范遵从使用标准化EL的规范。Faces1.2支持新的标准化EL,还包含一些bug修复的相关规范。在JSP规范的附录E中和Faces规范的前言中都可以看到更改内容的细节。

  3. Vue全局事件总线和订阅与发布使用案例分析讲解

    在 vue 里我们可以通过全局事件总线来实现任意组件之间通信,它的原理是给 Vue 的原型对象上面添加一个属性。这样的话我所有组件的都可以访问到这个属性,然后可以通过这个属性来访问其他组件给这个属性上面绑定的一些方法,从而去传递数据

  4. Springboot整合redis实现发布订阅功能介绍步骤

    发布订阅作为一种设计思想在很多开源组件中都有体现,比如大家熟知的消息中间件等,可谓把发布订阅这一思想体现的淋漓尽致了

  5. redis实现队列的阻塞、延时、发布和订阅

    本文主要介绍了redis实现队列的阻塞、延时、发布和订阅,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. js简单粗暴的发布订阅示例代码

    这篇文章主要给大家介绍了js简单粗暴的发布订阅的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  7. 多数据表共用一个页的新闻发布

    这篇文章主要给大家介绍了关于多数据表共用一个页的新闻发布的相关资料,需要的朋友可以参考下

  8. Javascript发布订阅模式介绍

    这篇文章介绍了Javascript发布订阅模式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. Jquery 自定义事件实现发布/订阅的简单实例

    下面小编就为大家带来一篇Jquery 自定义事件实现发布/订阅的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. iOS中使用Fastlane实现自动化打包和发布

    Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包、发布等工作,可以节省大量的时间。下面给大家介绍ios fastlane 自动化打包和发布的安装方法,需要的朋友参考下吧

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部