Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何自动测试npm包的用户版本,而不是在持续集成上运行开发版本?_Node.js_Continuous Integration_Automated Tests_Npm - Fatal编程技术网

Node.js 如何自动测试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中添加了一个目标:

偶尔,模块的开发版本在我的开发工作区中工作,并将Travis CI传递给npm,但在发布到npm后,最终用户包被破坏

例如,如果您使用的子模块应该在
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工作流中。