发布一款npm包帮助理解npm

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

平时专一于实现业务,一直没有去了解一款包的发布流程,忙里偷闲,今天就体验下编写并发布一个package的过程,记录下来分享给你们。 一个包诞生的过程无非是:编写-测试-发布-迭代-测试-发布...前端

初始化项目

mkdir math-tool_demo 新建文件夹java

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

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

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

编写包里的代码

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

新建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-outdatednpm-update


本文完,若有纰漏欢迎读者指正

相关文章
相关标签/搜索