假设您想要安装一个库lib-a,它具有依赖项dep-1dep-2.如果lib-a已在其包装中声明.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

如果我要定制包装.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"
  }
}

通过修改包.然后就可以运行json了

npm install lib-a

它将安装与node 0.8.0兼容的dep-2分支.但是,这需要我有权修改lib-a,对于我的具体情况我没有.从技术上讲,我可以使用fork lib-a并对包进行上述更改.json.但在我的具体 case 中,lib-aanother库的一个依赖项,所以我必须把它引用到的项目Forking ,等等...

所以问题是,有没有办法告诉NPM安装lib-a,并告诉它使用dep-2node0.8.0分支?比如:

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

那太棒了.如果不可能的话,我很高兴知道这一点,这样我就可以准备好Forking /定制项目链.

推荐答案

NPM install syntax:

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

更多信息:

Node.js相关问答推荐

无法在本地运行dockerfile

使用Vite和ReactJS时,在哪里设置NODE_OPTIONS?

使用NodeJS输出检索Base64图像的网络报废

JEST模拟由http服务器控制器导入的ES模块

Puppeteer 的 BrowserFetcher 发生了什么?

使用 axios 和 Cheerio (Node js) 抓取 google 搜索

GitLab 依赖扫描需要源代码中的 package-lock.json 才能执行

合并Shift对象数组以创建最终的排班表

更新文档数组中的文档 Mongoose

带有事件网格的 Azure 函数在没有 ngrok 的情况下在本地运行

如何在 cypress 测试中进行计算

fs.writefile 选项参数的可能值,尤其是只读文件的整数

如何防止 node.js 中的内存泄漏?

如何promise AWS JavaScript 开发工具包?

node.js 中 res.setHeader 和 res.header 的区别

使用 ES6 语法和动态路径导入模块

NODEJS 进程信息

如何运行用 TypeScript 编写的 Mocha 测试?

名称类型为 mongoose 的字段

- configuration.output.path:提供的值public不是绝对路径!使用 Webpack