NPM发布及版本管理

NPM是随同NodeJS一起安装的包管理工具。

允许用户从NPM服务器下载别人编写的第三方包到本地使用;
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用;
允许用户将自己编写的包或命令行程序上传到服务器供别人使用;

1. 注册NPM账号

用户可以登陆 https://www.npmjs.com/ 注册个人账户。

注意:注册完需要验证邮箱,不然发布包的时候会失败。

2. NPM仓库管理

推荐使用 nrm 对NPM仓库进行管理。
nrm 是一款NPM仓库管理软件,可以快速切换NPM仓库。

a. 安装

npm install -g npm 

b. 列出所有NPM仓库

nrm ls

c. 增加NPM仓库

nrm add cnpm https://registry.npm.Taobao.org

d. 切换NPM仓库

nrm use npm 

3. NPM发布

a. 增加用户

npm adduser

发布包之前,需要增加一个账户,如果有自己的账户,直接 npm login 登录即可;
增加账户时,需要填写注册NPM时填写的用户名、密码、邮箱;
显示 logged is as yueluo on https://registry.npmjs.org 表示已经增加成功;

b. 切换仓库

查看一下NPM仓库,nrm ls 前面有 * 号的就是当前仓库。
如果当前指向的不是 npm 的仓库地址,需要使用 nrm use npm 进行切换。

nrm.png

注意:发布NPM包时,必须使用npm的仓库地址,毕竟是向人家的免费仓库里发布包。

c. 发布NPM包

切换到需要发布包的根路径下,执行以下命令。出现 + … 的字样代表当前包发布成功。

npm publish

np1.png

d. 发布scoped包

现在我的 package.json 是这样的,name 属性为 yueluo-first。

np2.png

如果想发布名为 @yueluo/yueluo-first的包,使用域服务,是需要收费的。
当然,需要不想被收费,可以使用以下命令进行发布。

npm publish --access public
为什么要使用域服务?

假如存在两个包,都是babel-loader。一个属于xiao ming,一个属于xiao li。
这时使用域服务,为bebel-loader添加前缀,发布时就不会存在冲突问题。

@xiaoming/babel-loader
@xiaoli/babel-loader

4. 版本迭代

发布npm包,自然存在版本迭代的需求,介绍一下常用的命令。

a. 增加版本

npm version <magor | minor | path>

例如当前我的package.json文件中的版本是0.2.0,如果我想修改版本。
我可以执行 npm version 0.2.1 对修订版本进行修改。
修改后执行 npm publish 命令再次发布即可。

b. 查看版本迭代情况

npm view yueluo-first versions 

5. 废弃包版本

版本废弃

可以使用以下命令进行指定版本的版本废弃。

npm deprecate yueluo-first@0.1.0 'deprecate fircdst version'

这时,你或许会发现当使用 npm view 查看版本时,版本是没有变化的。
不过不用担心,这是正常现象,当你安装已经废弃的版本时,npm 会报以下提示。

npm WARN deprecated yueluo-first@0.1.0: deprecate first version

6. 删除包

NPM包在24小时后可再次重发,发布72小时之内的包可删除,超出这个时间就不可以删除啦。

可以使用以下命令进行包的删除。

a. 删除指定版本的包

npm unpublish yeuluo-first@0.1.0 -force

b. 删除包

npm unpublish yeuluo-first -force

7. 总结

这就是我总结的所有与NPM发布包相关的命令啦,希望可以对大家有所帮助。