使用NPM安装软件包时,您能告诉它使用其依赖项之一的不同版本吗?

时间:2012-06-27 18:53:41

标签: node.js dependencies npm

假设您要安装具有依赖项lib-adep-1的库dep-2。如果{(1}}已在其package.json中声明使用过时的lib-a版本(假设它在刚刚出现的节点0.8.0上不起作用),但是有一个与节点0.8.0一起使用的dep-2的分支 - 分支名称dep-2

所以等式中的包是:

node0.8.0

有没有办法告诉NPM安装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 ,但是使用lib-a代替dep-2#node0.8.0

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

dep-2

如果我要自定义npm install git://github.com/user-c/dep-2#node0.8.0 的package.json,您可以告诉它使用lib-a这样:

dep-2#node0.8.0

通过修改package.json,您可以运行

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

它将安装节点0.8.0兼容npm install lib-a 分支。但是,这需要我有权修改dep-2,对于我的具体情况,我没有。从技术上讲,我可以分叉lib-a并对package.json进行上述更改。但在我的具体情况中,lib-a另一个库的依赖项,因此我必须将它引用的项目分开,然后依次...

所以问题是,有没有办法告诉NPM安装lib-a,并告诉它使用lib-a的{​​{1}}分支?像这样:

node0.8.0

那太棒了。如果不可能的话,那将是很好的,所以我可以准备自己必须分叉/定制项目链。

1 个答案:

答案 0 :(得分:45)

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