使用NPM安装软件包时,您能否告诉它使用其中一个版本的不同版本?

假设你想安装依赖关系dep-1dep-2的库lib-a 。 如果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 

如果我要自定义lib-a的package.json,你可以告诉它使用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分支。 但是,这需要我有权修改lib-a ,对于我的具体情况我没有。 从技术上讲,我可以fork lib-a ,并对package.json进行上述修改。 但在我的具体情况下, lib-a另一个库的依赖项,所以我必须分叉引用它的项目,并且…

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

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

那将是真棒。 如果这是不可能的,那将是很好的知道,所以我可以准备自己必须叉/定制的项目链。

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) 

所以你可以select其中的一种方法来安装你的模块。

安装特定版本的最简单的方法是这样的:

 npm install module@0.0.2 

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