node.js - 在 Docker 容器中预缓存 node_modules

标签 node.js docker npm continuous-integration npm-install

让我感到沮丧的是,为使用 Grunt 和 Gulp 等 Node 工具链的项目构建 CI 需要相当长的时间,其中大部分时间都被 npm install 消耗了。

我已经尝试设置一个 Docker 镜像,在 npm 缓存中预烘焙所有 node_module 依赖项(每个都在我的 package.json 文件中声明的相同固定版本),但即便如此构建仍然需要几分钟,而它真正需要做的就是将几个目录从 npm 缓存复制到我项目的 node_modules 中。

我已将 cache-min 设置为 9999999,但它似乎仍然比实际需要的时间长得多。

我看过 local-npmnpm_lazy但它们似乎太过分了,前者需要很长时间才能安装——我怀疑它正在尝试下载现有的每个 npm 模块——我只需要有限的数量,不需要运行网络服务器来为它们提供服务在 Docker 容器中。

...我错过了什么吗?必须有一种更快的方式来运行 CI 构建...

最佳答案

我能够通过使用 .npmrc 指向 docker 容器内的 npm 缓存来让它工作。我建议你将 docker exec 放入你的容器并运行 npm config list | grep cache 确保使用缓存。

关于node.js - 在 Docker 容器中预缓存 node_modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38736370/

相关文章:

javascript - React 网络摄像头 - 截屏问题

node.js - kafka Node 无法在本地环境中连接到kafka服务器

docker - 卡夫卡和动物园管理员之间的注册流程

linux - 在 Linux 中的临时网络上托管 Web 应用程序

docker-jenkins 容器无法访问互联网

node.js - docker compose = ECONNREFUSED 中的 NodeJS Mongodb

linux - 如何在 Linux (CentOs) 上部署 Angular 2 Quick Start 项目

ionic-framework - 无法安装 ionic-service-deploy

javascript - 我如何在 Node JS 上使用 papaparse?

node.js - 运行 mongoose 更新代码时出错 ( router.patch() )