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

时间:2014-02-14 19:30:44

标签: node.js continuous-integration automated-tests npm

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

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

如何自动测试?你使用外部索具吗?有秘密模块吗?你有用户验收测试套件吗?

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

2 个答案:

答案 0 :(得分:2)

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

  1. 问题npm pack从我的来源创建一个包。

  2. 进入创建的目录(由Gruntfile自动生成)仅用于测试使用npm install <path to the package created in the previous step>安装新包。

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

    上述步骤不会捕获您在问题中提到的依赖性问题,但可以轻松扩展以捕获它。为此,我将添加一个或多个测试,这些测试会导致上面步骤2中安装的软件包使用它所依赖的所有内容调用require

答案 1 :(得分:0)

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

我听说Jenkins对此很好(至少,这是node.js核心团队似乎正在使用的),但还没有任何第一手经验。我们只是计划在几周内安装。

此外,拥有一些依赖于您并测试它的外部模块会有所帮助。 :)