npm模块管理-区分测试包和稳定包

2,818 阅读1分钟

最近项目模块迁移到npm上进行管理,因为npm仓库是线上线下公用的,所以模块中新开发的功能怎么进行测试?如果直接npm publish,会导致影响线上环境,然而测试代码影响线上代码是我们最不想看到的。经过一番调查,发现npm官方已经考虑到大家的这种情况了,可以通过npm中的tag对这些包进行管理。

开始之前,简单介绍一下tag版本号的区别:

  • 版本号:我们常用的版本号命名方式为1.1.1,即Semver规范:semver.org/,不同位置的数字代表不同版本,但是这样就需要人工记忆哪个版本是测试的,哪个版本是线上的,很容易出错
  • dist-tag:不同于上面的版本号,dist-tag(Distribution tags) 提供了一个可读性更高的分发标签。例如将包分发为devbugfix等,然后下载时指定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