【问题标题】:avoid installing all the node_modules dependencies each time in CI environment避免每次在 CI 环境中安装所有 node_modules 依赖项
【发布时间】:2015-04-12 01:17:48
【问题描述】:

我的项目中有多个模块,其中只有一个是节点项目。然后我使用gradle-node-plugin 与其余模块集成。由于我将 jenkins 用于 CI,并且我希望 jenkins 每次默认行为是 npm install (此处通过 gradle-node-plugin npmInstall 包装器,但对于普通 npm 情况相同)时,都可以完全擦除项目目录并检查最新版本每次触发 CI 重建时的所有依赖项。

我想知道是否可以在全局某处安装 package.json 依赖项(例如,如果 gradle-node-plugin.gradle/nodejs/<node-dist>/lib/node_modules/ 中,或者将 node_modules 保留在构建树之外(例如在 jenkins 工作区文件夹中)。

编辑:

由于项目中设置的所有节点依赖项实际上需要大约 300MB,代理缓存似乎不够,因为几个因素 - 大小、解决所有这些所需的时间以及一些依赖项甚至需要在下载后重新编译(例如socket-io)。目前我们正在使用build.gradle 中定义的解决方法,将node_modules 移动到不会被清理的父文件夹,而不是使用符号链接。该变通方法仅在 Jenkins 环境中激活。

【问题讨论】:

    标签: node.js jenkins gradle npm


    【解决方案1】:

    您是否要创建一个mirror of the npm repository,如果是,有一个 npm 模块可以做到这一点

    npm-mirror 是一个用于镜像 npm 包子集的实用程序 另一个 npm 注册表。它同步所有依赖项 特定节点模块并将它们写入本地文件系统,以便 一个简单的网络服务器可以表现得像一个符合 commonjs 的包 注册表。

    【讨论】:

    • 我已经在研究 npm-lazy 但仍然重新解决所有 npm(实际上也是 bower)依赖项需要一些时间,与 maven/gradle 构建系统相比,这似乎是不必要的任务可以将依赖关系保留在构建树之外。无论如何,某种镜子可能是一种解决方法。
    猜你喜欢
    • 2016-02-05
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    相关资源
    最近更新 更多