NPM模块的TAG管理

2019-01-25  本文已影响0人  炜_f0e4

npm version patch
该命令会使小版本号+1 并且帮你执行 git add commit 并且会用新的版本号在本地打一个tag 通过git tag查看本地tag列表执行这个命令之前必须保证 项目已经 git add commit不然会报错

npm version prerelease
该命令同上 唯一区别就是 他不是小版本+1,他会再小版本号后面追加一个版本号

npm publish --tag tyc@1.0.12-1
运行了上面其中一个之后 可以运行这个命令发布这个tag了 (这里发布之后 用户下载是不会下到这个版本的 触发用户指定版本)

npm info
可以用该命令查看当前脚手架的版本信息

# 重点看这一块 latest 是用户默认下载的
# tyc@1.0.12-2: 1.0.12-2 这一个是测试版本 除非用户指定版本号才能下的到
dist-tags:
latest: 1.0.12-0
n-n-n-n@1.0.2-1: 1.0.12-0
tyc@1.0.12-1: 1.0.12-1
tyc@1.0.12-2: 1.0.12-2

如何才能将 tyc@1.0.12-2: 1.0.12-2 这个上线呢?
当我们的prerelease版本已经稳定了,重新设置为稳定版本
npm dist-tag add tyc@1.0.12-2 latest 可以通过该命令 将开发的 1.0.12-2 版本变成正式版本 这样用户那边 npm i tyc 就会下载的是 1.0.12-2 而不再是 1.0.12-0

总结

npm version patch``npm version prerelease这两个其实没什么用 辅助作用 如果你想发布一个 beta版 重点在于npm publish --tag tyc@1.0.12-1 发布一个tag包 既不影响用户那边 你又可以测试新功能,测试好了可以 npm dist-tag add tyc@1.0.12-2 latest 切换到正式版

npm dist-tag ls n-n-n-n 和 npm dist-tag ls 查看当前包dist-tag信息

在npm里发布一个模块还是很容易的, 在模块目录里 npm publish 就发布好了一个模块, 这个时候模块的版本就是你package.json里的版本号(当然模块必须是没有被占位的,名字和版本都没有被占据的才可以)。

但是某些情况,我们都会发布一个alpha版本、beta版本的模块,比如connect:

# connect versions
     '3.0.0-rc.1': '2014-03-06T20:38:01.961Z',
     '2.14.2': '2014-03-12T01:56:42.090Z',
     '2.14.3': '2014-03-18T15:08:21.115Z',
     '2.14.4': '2014-04-07T20:57:11.875Z',
     '2.14.5': '2014-04-24T19:33:15.518Z',
     '2.15.0': '2014-05-05T04:08:51.417Z',
     '3.0.0-rc.2': '2014-05-05T04:30:08.312Z',

当模块非常受欢迎时,这个rc版本可以像很多软件的nightbuild,发布给尝鲜的小白鼠们先测试, 尤其是命令行工具类型的package。 但是如果直接 npm publish , 默认会更新tag latest对应的版本号,这可能会误伤了很多 package.json dependencies 写成*的用户, 怎么避免这种情况呢?

先看看 npm install

npm install <PackageName>@<?>

<?> 可以是 <tag>, 可以是具体的<versionNum>

npm install fishbar 实际安装的是 fishbar模块的 latest tag指定的版本,看看connect的tag信息npm info fishbar , 输出的信息中有:

{ name: 'fishbar',
  description: 'test npm tag',
  'dist-tags': 
   { latest: '0.0.1',
     nightbuild: '0.0.2'},
   .........

dist-tags 里列出模块的所有tag, 所以可以这么解读, 当前稳定版本是 0.0.1, rc版本是0.0.1-pre, 还有一个测试版本。

用户在安装的时候 npm install fishbar 获取到的是0.0.1 版本(功能稳定), 而小白鼠用户npm install fishbar[@nightbuild](/user/nightbuild) 得到的就是一个最新测试版(不稳定但功能更强大)。

一旦0.0.2稳定之后,更新latest tag的指向

npm tag fishbar[@0](/user/0).0.2 latest

v0.0.2就上线了,无需再重新更新一个版本号。

而一旦发现bug,也可以通过上面的命令回退latest tag, 方便灵活,尤其是在npm unpublish 无法删除版本的时候,修复bug又没那么快的时候,赶紧回退latest以免干扰到模块的用户。

参考:

https://www.npmjs.org/doc/cli/npm-publish.html https://www.npmjs.org/doc/cli/npm-tag.html https://www.npmjs.org/doc/cli/npm-install.html

上一篇 下一篇

猜你喜欢

热点阅读