使用NPM安装软件包时,您能否告诉它使用其中一个版本的不同版本?
假设你想安装依赖关系dep-1
和dep-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-2
的node0.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