在安装带有NPM一个包,你可以告诉它使用一个不同的版本它的一个依赖的?(When installin

2019-06-25 19:49发布

假设你要安装的库lib-a具有依赖dep-1dep-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分支。 但是,这需要我有机会获得修改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

那将是真棒。 如果这是不可能的,这将是很好的了解,所以我可以准备自己不得不叉/自定义的项目链。

Answer 1:

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



文章来源: When installing a package with NPM, can you tell it to use a different version of one of its dependencies?