最近项目模块迁移到npm上进行管理,因为npm仓库是线上线下公用的,所以模块中新开发的功能怎么进行测试?如果直接npm publish
,会导致影响线上环境,然而测试代码影响线上代码是我们最不想看到的。经过一番调查,发现npm官方已经考虑到大家的这种情况了,可以通过npm中的tag
对这些包进行管理。
开始之前,简单介绍一下tag
和 版本号
的区别:
版本号
:我们常用的版本号命名方式为1.1.1
,即Semver规范
:semver.org/,不同位置的数字代表不同版本,但是这样就需要人工记忆哪个版本是测试的,哪个版本是线上的,很容易出错dist-tag
:不同于上面的版本号,dist-tag(Distribution tags) 提供了一个可读性更高的分发标签。例如将包分发为dev
、bugfix
等,然后下载时指定tag
即可,如:npm install my-package@dev
如何使用dist-tag
?
官方文档:docs.npmjs.com/cli/dist-ta…
npm dist-tag add <pkg>@<version> [<tag>] # 为已发布的某个版本号添加分发tag
npm dist-tag rm <pkg> <tag> # 删除某个版本的tag
npm dist-tag ls <pkg> # 显示pkg的所有tag
复制代码
在发布的时候可以使用npm publish --tag <tag>
在测试环境安装的时候就可以指定tag安装,如 npm install my-package@dev
等测试通过之后,将版本号的tag改为latest