当前位置: 首页 > 面试题库 >

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

游鸣
2023-03-14
问题内容

假设您要安装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

有没有办法告诉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分支。但是,这需要我可以访问Modify
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

那将是真棒。如果不可能的话,那将是一个很好的认识,因此我可以准备不得不分叉/自定义项目链。


问题答案:

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



 类似资料:
  • 问题内容: 我有以下目录结构: 我想为some_project安装依赖项。我知道我可以CD进入some_project然后运行npm install 但是我想知道是否可以不更改目录?就像是 问题答案: 您可以将变体与选项一起使用。在您的方案中,文件夹和前缀将相同:

  • 问题内容: 我可以通过终端访问运行centos 5.9的VPS,并安装了默认的python 2.4.3。我还通过以下命令安装了python 2.7.3 :(我使用代替) 然后我通过以下命令从源代码安装了node.js: 问题是,当我使用并尝试安装需要python> 2.4.3的node.js软件包时,出现此错误: 我应该如何 “通过–python开关以指向Python > = v2.5.0”? 问

  • 问题内容: 我已经通过安装了一些软件包,而没有设置第一个软件包。现在,我想创建一个文件,但是将所有已安装的软件包保留为依赖项。简单运行不提供此选项,我可以自动实现吗? 问题答案: 2016年1月更新 npm 现在开箱即用。我有npm 3.5.2 版本。 因此仅安装了 下划线* 的 node_modules 文件夹。 * 然后: 包含在package.json中:

  • 问题内容: 首先,我要说我是Ant的新手。就像之前一样,我只是在两天前才开始学习它以完成此任务。 我想要做的是创建一个“ master”蚂蚁脚本,该脚本调用其他几个蚂蚁脚本。例如: 现在,我拥有用于​​A,B和C的所有单独版本。通过这个,我的意思是我可以从这些文件夹中的任何一个运行“ ant”,它将构建项目并生成一个jar文件。如果以这种方式构建A,B和C,则我有3个jar文件。然后,我可以将它们

  • 问题内容: 在Maven中,依赖关系通常是这样设置的: 现在,如果你正在使用发布频繁的库,则不断更新标记可能会有些烦人。有什么方法可以告诉始终使用最新的可用版本(来自存储库)? 问题答案: 有关更多详细信息,请参见Maven书籍的POM语法部分。或者在Dependency Version Ranges上查看此文档,其中: 方括号([&])表示“封闭”(含)。 括号((&))表示“开放”(排除)。

  • 问题内容: 我找到了如何以编程方式安装npm软件包,并且代码可以正常工作: 如果要安装软件包的第一个版本,如何使用模块在NodeJS端进行安装? 我知道我可以使用子进程,但是我想选择模块解决方案。 问题答案: NPM NodeJS API没有很好的文档说明,但是检查代码会有所帮助。 在这里,我们找到以下字符串: 我的问题是关于版本的,所以我们可以做:安装的版本。 我没有进行测试,但是我确信我们可以