package.json: 只下载依赖不安装

package.json: Just download dependency but do not install it

我将要编写一个 yeoman 生成器,其中整个模板托管在 git 存储库中。所以我的 yeoman 生成器的 package.json 看起来像

{
  "name": "generator-foo",
  "version": "0.1.0",
  "description": "",
  "files": [
    "generators"
  ],
  "keywords": [
    "yeoman-generator"
  ],
  "dependencies": {
    "foo-template": "git://somewhere-in-the-world/foo-template.git#0.1.0",
    "chalk": "^1.1.3",
    "yeoman-generator": "^1.1.1",
    "yosay": "^2.0.0"
  }
}

有什么方法可以防止 npm install 安装 foo-template 包,即 运行 任何仅用于此包的安装后脚本?相反,它应该只是下载到 node_modules.

As describe here,可以使用 --ignore-scripts 标志全局禁用 npm 的安装后脚本。

作为一个完整的解决方案,我会将您对 foo-template 的显式依赖移动到启用了忽略脚本的本地安装后部分:

{
  "name": "generator-foo",
  ...
  "postinstall": "npm install --ignore-scripts git://somewhere-in-the-world/foo-template.git#0.1.0",
  "peerDependencies": {
    "foo-template": "git://somewhere-in-the-world/foo-template.git#0.1.0" 
  }
}

请注意,为确保明确描述依赖关系,我们应将其标记为 peerDependency(例如,防止在 prune 上删除包)。