根据官方NPM文档,package.json
中的overrides
允许完全用另一个包覆盖一个包:
Overrides提供了一种替换依赖树中包的方法使用另一个版本或完全使用另一程序包。这些更改可以根据需要确定具体或模糊的范围。
https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides
然而,我不知道如何用同一个包的更改版本之外的任何东西来替换一个包。
我试图在传递依赖关系中将node-sass
替换为sass
,但我尝试过的配置都不起作用。
"overrides": {
"node-sass": "sass@^1.3.0"
}
"overrides": {
"node-sass": {
".": "sass@^1.3.0"
}
}
以上任何一种配置都会产生以下NPM错误:
Invalid tag name "sass@^1.3.0": Tags may not have any characters that encodeURIComponent encodes.
如果我尝试一些更基本的东西:
"overrides": {
"node-sass": "sass"
}
NPM错误:
No matching version found for node-sass@sass.
我在NPM第8.3.1版。
真的有可能用另一个包完全替换一个包吗?还是我误解了文档中的内容?
根据@Phil评论中链接的Github问题中的一条评论,我可以使用npm:
前缀完全用另一个包覆盖一个包
"overrides": {
"dependency": {
"node-sass": "npm:sass@1.54.7"
}
}
据我所知,它没有与overrides
相关的文档,所以我不知道这个功能在多大程度上得到支持,但它似乎至少在基本情况下有效。