68

假设您要安装一个lib-a具有依赖项的库,dep-1并且dep-2. 如果lib-a已在其 package.json 中声明使用dep-2已过期的版本(例如它不适用于刚刚发布的节点 0.8.0),但有一个分支dep-2适用于节点 0.8.0 -分支名称node0.8.0

所以等式中的包是:

git://github.com/user-a/lib-a
git://github.com/user-b/dep-1
git://github.com/user-c/dep-2
git://github.com/user-c/dep-2#node0.8.0

有没有办法告诉 NPM 安装lib-a,但使用dep-2#node0.8.0而不是dep-2

使用 NPM,您可以安装项目的特定分支,如下所示:

npm install git://github.com/user-c/dep-2#node0.8.0

如果我要自定义 package.json 的lib-a,你可以告诉它dep-2#node0.8.0像这样使用:

{
  "name": "lib-a",
  "dependencies": {
    "dep-1": ">= 1.5.0",
    "dep-2": "git://github.com/user-c/dep-2#node0.8.0"
  }
}

通过修改 package.json 你可以运行

npm install lib-a

它将安装节点 0.8.0 兼容dep-2分支。但是,这要求我可以访问 modifying lib-a,而对于我的具体情况,我没有。从技术上讲,我可以分叉lib-a并对 package.json 进行上述更改。但在我的具体情况下,lib-a另一个库的依赖项,所以我必须分叉它所引用的项目,等等......

所以问题是,有没有办法告诉 NPM 安装lib-a,并告诉它使用的node0.8.0分支dep-2?像这样的东西:

npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0

那将是真棒。如果这是不可能的,那会很高兴知道这样我就可以准备好分叉/自定义项目链。

4

1 回答 1

46

NPM 安装语法:

npm install (with no args in a package dir)
npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact]
npm install [@<scope>/]<name>@<tag>
npm install [@<scope>/]<name>@<version>
npm install [@<scope>/]<name>@<version range>
npm i (with any of the previous argument usage)

因此您可以选择其中一种方法来安装您的模块。

安装特定版本的最简单方法是这种情况:

npm install module@0.0.2

更多信息: https ://docs.npmjs.com/cli/install

于 2012-06-27T19:10:56.010 回答