npm - 自动下载 package.json 文件中列出的 npm 包
问题描述
我正在创建一个本地存储库,其中将包含我在项目中使用的所有包,因此我可以将这些包安装在无法访问 Internet 的机器上。我想到了可以在机器上克隆并运行的存储库,以便yarn install
从本地存储库中获取项目中可用的所有包。我怎样才能做到这一点?此处询问了类似的问题Using npm how can I download a package as a zip with all its dependencies include in the package
解决方案
您的问题中没有足够的信息来完全了解您的情况,但是如果您将node_modules
目录提交到存储库,则模块将在那里,而无需用户运行npm
或yarn
安装它们。这假设用户将从 repo 工作区运行代码,并且没有任何模块需要编译步骤或其他可能特定于平台的构建步骤。但如果它们都是普通的 JavaScript 模块,你应该没问题。
如果您想将所有模块作为单独的 repo 而不是签入node_modules
,我可以临时想到两种可行的方法。
- 让包 repo 成为完全安装
node_modules
目录的签入。然后将该 repo 设为主 repo 的Git 子模块,该子模块会像在主 repo 中一样被克隆node_modules
。 - 用于
npm pack
为您需要的每个包创建 .tgz 文件。将这些文件存储在包存储库中。将该 repo 克隆到目标机器上的已知路径中。通过路径名安装主仓库。例如,如果你运行npm install /var/packages/foo-1.0.0.tgz
,它会在你的文件中添加一行package.json
,看起来像这样:"foo": "file:../../../var/packages/foo-1.0.0.tgz"
. 在这种情况下,npm install
将从该路径而不是通过网络安装。
推荐阅读
- package - macOS 上的 Homebrew:如何找到旧版本的 brew 公式?
- python - 如何获取python开始执行代码的时间并将其添加为文本文件中的列
- css - 如何使 MaterialUI 样式声明可调试?
- google-apps-script - 谷歌聊天机器人 - 发送私人消息没有事件
- angular8 - 如何更改 ngx-material-timepicker 中计时器的大小?
- polymer - 如何根据 lit-element 中的属性添加类?
- r - 如何在 R 数据框中组合两个 DATES 变量
- typescript - 如何在函数参数中使用泛型指定泛型类型
- r - 按大小分组的多个变量的条形图百分比
- dpdk - 为什么 dpdk 发送的 udp 数据包接收到的有效载荷为零?