node.js - 在 Jenkins 管道上缓存 NPM 依赖项

标签 node.js caching jenkins dependencies

我们都知道使用 npm 下载依赖项非常耗时,特别是当我们仅限于旧的 npm 版本时。

对我来说,作为一名开发人员,这不是什么大问题,因为我不得不在我的本地开发机器上这样做几次,而且一切都与我项目文件夹中的 node_modules 缓存一起工作。但现在我想使用 Jenkins 将这些应用程序带到 CI 环境中。

我意识到用 npm 下载依赖项花费了大量时间。这是一个问题,因为:

  1. npm下载依赖在项目的文件夹下,而不是像Maven的/home/user/.m2这样的全局文件夹

  2. 我必须在每次运行时清理 Jenkins 工作区文件夹,以避免 git checkout 出现问题。

我想要一个非常优雅的解决方案来缓存我的 Jenkins slaves 上的 npm 依赖项,但到目前为止我只能想到:

  1. 从 Jenkins 工作区中删除除 node_modules 文件夹以外的所有内容。我不喜欢这样,因为如果我继续为我的项目创建分支,我可能会消耗大量硬盘。每个分支创建一个工作区。

  2. 在每次安装 npm 后执行类似 cp ./node_modules/home/npm_cache 的操作,然后在代码 checkout 后执行 cp/home/npm_cache ./node_modules 之类的操作。

我觉得这些解决方案很糟糕。必须有更好的方法来做到这一点。

最佳答案

NPM 有一个全局缓存存储在~/.npm

关于node.js - 在 Jenkins 管道上缓存 NPM 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46870020/

相关文章:

node.js - 如何将变量放入我的查询中? ( Mongoose )

spring - 如何告诉 Spring 缓存不要在 @Cacheable 注释中缓存空值

android - android apk jenkins 的存档 Artifact

jenkins - 强制 Jenkins 为每个分支事件触发单独的构建

node.js - 如何在 sequelize 连接对象中设置应用程序名称?

node.js - Docker npm 安装失败

azure - 使用 Azure CDN 缓存 REST API

ios - Xcode 4 中 GHUnit + Hudson/Jenkins 的问题

javascript - 我如何在 node.js 中使用 promises 来清理回调链?

java - spark 中的 cache() 是改变 RDD 的状态还是创建一个新的?