我正在尝试使用 docker 实现开发人员工作流程,并能够离线开发(例如,当您在具有不同依赖项的分支之间切换时不必运行 npm install
)
最直观的方法是将依赖项存储在源代码管理中。这有其自身的问题,尤其是在使用编译依赖项的模块时。我几乎尝试了所有我能想到并找到的东西:
npm 打包
我的项目依赖项,存储在源代码中,但这不会存储我的依赖项的依赖项- 将node_modules存储在源代码中,将其复制到容器并运行
npm重建
,但它doesn't actually trigger a rebuild - 运行
npm install --no-registry
,因此它会触发重建,但不会尝试调用,但它实际上无论如何都会调用公共(public)注册表 - 我见过的其他解决方案,例如 Node-PAC似乎被遗弃了
- npmbox 看起来最有前途,但它要求它全局安装在目标上,这可以在我可以构建但不能在生产环境中运行的容器中运行,除非我们开始在生产环境中部署容器。
这是徒劳的吗?缺乏网络访问的情况很少见,只有在安装新模块或在具有不同依赖项的修订版之间移动时才真正需要
最佳答案
另一个选项是设置一个私有(private) npm 存储库并将其配置为缓存公共(public)存储库。有多种选项可以实现此目的,我建议尝试 Nexus:https://www.sonatype.com/nexus-repository-oss
关于node.js - NodeJs在docker中离线开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44837432/