偶尔会发生这样的情况:模块的开发版本在我的开发工作空间中工作,并传递给Travis-CI,但在发布到npm之后,最终用户包被破坏了。
例如,如果您使用一个本应在dependencies中但在devDependencies中的子模块,则CI将通过(但还有许多其他可能的破坏)。
你是如何自动化测试的?你使用外部索具吗?有没有秘密模块?你有用户验收测试套件吗?
我使用Github和Travis-CI,但标准安装使用开发安装。
发布于 2014-02-15 07:38:13
曾几何时,我发现npm允许我发布无法安装的包。因此,我在我的Gruntfile中添加了一个这样的目标:
npm pack命令从我的源代码创建一个包。将Gruntfile自动创建),以便测试使用npm install <path to the package created in the previous step>.安装新的包
我有一个发布新版本的目标,只有在上述步骤成功的情况下才会发布。
上面的步骤不会捕获您在问题中提到的依赖问题,但它们可以很容易地扩展以捕获它。为此,我会添加一个或多个测试,这些测试会导致上面步骤2中安装的包调用require以及它所依赖的所有内容。
发布于 2014-02-15 07:48:38
我建议设置您自己的CI服务器,它基本上只做一件事,npm install package ; cd node_modules/package ; npm test。这将确保您的软件包至少在服务器上是可安装的。
我听说Jenkins在这方面做得很好(至少,这是node.js核心团队似乎正在使用的),但还没有任何第一手经验。我们只是计划在几周内做好准备。
此外,拥有一些依赖于您的外部模块并对其进行测试也会有所帮助。:)
https://stackoverflow.com/questions/21787957
复制相似问题