Lan*_*ard 61 dependencies node.js npm
假设你要安装的库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
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉NPM安装lib-a,但使用dep-2#node0.8.0而不是dep-2?
使用NPM,您可以安装项目的特定分支,如下所示:
npm install git://github.com/user-c/dep-2#node0.8.0
Run Code Online (Sandbox Code Playgroud)
如果我要自定义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"
}
}
Run Code Online (Sandbox Code Playgroud)
通过修改package.json,您可以运行
npm install lib-a
Run Code Online (Sandbox Code Playgroud)
它将安装节点0.8.0兼容dep-2分支.但是,这需要我有权修改lib-a,对于我的具体情况,我没有.从技术上讲,我可以fork 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
Run Code Online (Sandbox Code Playgroud)
那将是真棒.如果这是不可能的,那将是很好的知道,所以我可以准备自己必须分叉/定制项目链.
mic*_*nic 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)
Run Code Online (Sandbox Code Playgroud)
因此,您可以选择其中一种方法来安装模块.
安装特定版本的最简单方法是这样的:
npm install module@0.0.2
Run Code Online (Sandbox Code Playgroud)
更多信息:https: //docs.npmjs.com/cli/install