node.js - 使用 NPM 安装包时,你能告诉它使用其依赖项之一的不同版本吗?

标签 node.js dependencies npm

假设您要安装一个库 lib-a,它具有依赖项 dep-1dep-2。如果 lib-a 在其 package.json 中声明使用过期的 dep-2 版本(假设它在 Node 0.8.0 上不起作用刚刚出来),但是 dep-2 的一个分支适用于 Node 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

它会安装 node 0.8.0 兼容的 dep-2 分支。但是,这需要我有权修改 lib-a,而对于我的具体情况,我没有。从技术上讲,我可以 fork lib-a 并对 package.json 进行上述更改。但在我的具体情况下, lib-aanother 库的依赖项,所以我必须 fork 它所引用的项目,然后继续......

那么问题来了,有没有办法告诉 NPM 安装 lib-a,并告诉它使用 dep 的 node0.8.0 分支-2?像这样的:

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

那太棒了。如果这是不可能的,那会很高兴知道这样我就可以准备好必须 fork /自定义项目链。

最佳答案

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

关于node.js - 使用 NPM 安装包时,你能告诉它使用其依赖项之一的不同版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11233133/

相关文章:

maven - 在 Gradle 的 setting.xml 中使用 Maven 凭据

javascript - 有没有一种有效的方法来区分由 `npm list` 填充的两个依赖关系树?

visual-studio - Visual Studio 项目依赖项

node.js - MarkLogic npm 问题

node.js - MS Graph API 从 driveItem 访问工作簿

javascript - Webpack Express 无法解析模块 'fs' ,请求依赖为表达式

node.js - 必须使用 node.js 快速调用 res.end() 吗?

Node.js 模块 "fibers"没有采用正确的版本

node.js - 安装 npm 包时发生的事件?

linux - 生产服务器上的 NodeJS - 权限