首页 > 解决方案 > 自动下载 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

标签: npmyarnpkgpackage.json

解决方案


您的问题中没有足够的信息来完全了解您的情况,但是如果您将node_modules目录提交到存储库,则模块将在那里,而无需用户运行npmyarn安装它们。这假设用户将从 repo 工作区运行代码,并且没有任何模块需要编译步骤或其他可能特定于平台的构建步骤。但如果它们都是普通的 JavaScript 模块,你应该没问题。

如果您想将所有模块作为单独的 repo 而不是签入node_modules,我可以临时想到两种可行的方法。

  1. 让包 repo 成为完全安装node_modules目录的签入。然后将该 repo 设为主 repo 的Git 子模块,该子模块会像在主 repo 中一样被克隆node_modules
  2. 用于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将从该路径而不是通过网络安装。

推荐阅读