如何自动testingnpm包的用户版本,而不是在持续集成上运行开发版本?

偶尔会发生一个模块的开发版本在我的开发工作区中工作,并传递给Travis-CI,但是在发布到npm之后,最终用户软件包被打破了。

例如,如果你使用一个应该在dependencies但在devDependenciesdevDependencies子模块,那么CI将会通过(但是还有很多其他可能的devDependencies )。

你如何自动testing这个? 你使用外部绑定? 有秘密模块吗? 你有一个用户验收testing套件吗?

我使用Travis-CI的Github,但标准设置使用开发安装。

曾几何时,我发现npm会让我发布不可卸载的软件包。 所以我已经添加了一个目标到我的Gruntfile这样做:

  1. 发行npm pack ,从我的来源创build一个包。

  2. 进入为了testing而创build的目录(由Gruntfile自动创build),使用npm install <path to the package created in the previous step>安装新包。

我有一个发布新版本的目标,只有在上述步骤成功的情况下才会发布。

上面的步骤不会发现你在问题中提到的依赖性问题,但是可以很容易地扩展它来捕获它。 要做到这一点,我会添加一个或多个testing,导致在上面的步骤2中安装的软件包调用require所有依赖。

我build议设置你自己的CI服务器,基本上做一件事, npm install package ; cd node_modules/package ; npm test npm install package ; cd node_modules/package ; npm test npm install package ; cd node_modules/package ; npm test 。 这将确保您的软件包至less可以安装在您的服务器上。

我听说Jenkins对此很有帮助(至less,这就是node.js核心团队似乎正在使用的),但是还没有任何第一手的经验。 我们只是计划在几个星期内进入。

此外,有一些外部模块,取决于你和testing它有点帮助。 🙂