首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用npm强制使用npm依赖-强制分辨率而不使用npx?

如何使用npm强制使用npm依赖-强制分辨率而不使用npx?
EN

Stack Overflow用户
提问于 2021-05-28 15:11:19
回答 1查看 3.3K关注 0票数 2

我需要在嵌套依赖项中强制使用特定的包版本。对于这样的事情,npm-force-resolutions工作得很好。一个典型的解决方案是将script"preinstall": "npx npm-force-resolutions""resolutions": {}添加到包名列表中作为键,版本作为值。

例如,如果我们在node-fetch^1.7.3上有一个嵌套的依赖项,但在^2.6.1需要它,那么提取的package.json脚本可能如下所示:

代码语言:javascript
复制
{
  "scripts": {
    "preinstall": "npx npm-force-resolutions"
  },
  "resolutions": {
    "node-fetch": "^2.6.1"
  }
}

我面临的问题是,由于环境中的安全原因,我无法访问npx。我想出的一个解决方案是将npm-force-resolutions安装为一个dev依赖项,然后将./node_modules/.bin/npm-force-resolutions作为postinstall script添加到package.json文件中:

代码语言:javascript
复制
{
  "scripts": {
    "postinstall": "./node_modules/.bin/npm-force-resolutions"
  },
  "resolutions": {
    "node-fetch": "^2.6.1"
  }
}

可悲的是,在运行npm install之后,解决方案没有被更新(在上面的示例中,node-fetch仍然在^1.7.3上)。但是,一旦npm完成了所有软件包的安装,手动运行./node_modules/.bin/npm-force-resolutions确实会强制执行预期的解析(将上面的node-fetch^1.7.3更改为^2.6.1)。

是否有一种方法在安装生命周期内强制执行决议,但不调用npx?重要的是,它发生在对npm install的单个调用中,因为它涉及到持续集成。

EN

回答 1

Stack Overflow用户

发布于 2022-01-14 05:09:37

也许这不是最好的解决方案,但您可以尝试安装该依赖项并在预安装钩子中运行它,而不是运行npx:

代码语言:javascript
复制
"preinstall": "npm i npm-force-resolutions && ./node_modules/.bin/npm-force-resolutions",
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67741418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档