Node.js 如何自动测试npm包的用户版本,而不是在持续集成上运行开发版本?
偶尔,模块的开发版本在我的开发工作区中工作,并将Travis CI传递给npm,但在发布到npm后,最终用户包被破坏 例如,如果您使用的子模块应该在Node.js 如何自动测试npm包的用户版本,而不是在持续集成上运行开发版本?,node.js,continuous-integration,automated-tests,npm,Node.js,Continuous Integration,Automated Tests,Npm,偶尔,模块的开发版本在我的开发工作区中工作,并将Travis CI传递给npm,但在发布到npm后,最终用户包被破坏 例如,如果您使用的子模块应该在dependencies中,但在devDependencies中,则CI将通过(但还有许多其他可能的中断) 如何使测试自动化?你使用外部索具吗?有秘密模块吗?你有用户验收测试套件吗 我将Github与Travis CI一起使用,但标准设置使用开发安装。有一次,我发现npm可以让我发布可卸载的软件包。因此,我在我的Gruntfile中添加了一个目标:
dependencies
中,但在devDependencies
中,则CI将通过(但还有许多其他可能的中断)
如何使测试自动化?你使用外部索具吗?有秘密模块吗?你有用户验收测试套件吗
我将Github与Travis CI一起使用,但标准设置使用开发安装。有一次,我发现
npm
可以让我发布可卸载的软件包。因此,我在我的Gruntfile
中添加了一个目标:
npm-pack
以从我的源代码创建包Gruntfile
自动创建的)仅用于测试的目录中,使用npm install
安装新软件包上面的步骤无法解决您在问题中提到的依赖性问题,但是可以很容易地进行扩展以解决它。为此,我将添加一个或多个测试,使上面步骤2中安装的软件包调用
require
,并提供它所依赖的一切。我建议您设置自己的CI服务器,该服务器基本上只做一件事,npm install package;cd节点_模块/包;npm测试
。这将确保您的包至少可以安装在服务器上
我听说Jenkins在这方面做得很好(至少,node.js核心团队似乎正在使用这一点),但还没有任何第一手经验。我们只是计划在几周内开始
此外,拥有一些依赖于您的外部模块并对其进行测试也会有所帮助。:) 这听起来不错:我已经有了一个npm预发布脚本,链接到一个grunt任务,适合这个任务;我认为这一切都应该可以在node/grunt中实现,即使是在Travis上,也可以将内容写入临时目录。我不想设置自己的CI,因为我也想将此解决方案用于开源代码,并将其平滑到常见的Github/Travis工作流中。