用另一个包完全覆盖 NPM 包

Ste*_*ins 5 javascript node.js npm package.json

根据 NPM 官方文档,overridesinpackage.json允许用另一个包完全覆盖一个包:

覆盖提供了一种用另一个版本或完全另一个包替换依赖树中的包的方法。这些变化的范围可以根据需要具体或模糊。

https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides

但是,我不知道如何用同一包的更改版本以外的任何内容替换包。

我正在尝试在传递依赖项中替换为node-sasssass但我尝试过的配置都不起作用。

"overrides": {
  "node-sass": "sass@^1.3.0"
}

"overrides": {
  "node-sass": {
    ".": "sass@^1.3.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

上述任一配置都会产生以下 NPM 错误:

Invalid tag name "sass@^1.3.0": Tags may not have any characters that encodeURIComponent encodes.
Run Code Online (Sandbox Code Playgroud)

如果我尝试一些更基本的东西:

"overrides": {
  "node-sass": "sass"
}
Run Code Online (Sandbox Code Playgroud)

NPM 错误:

No matching version found for node-sass@sass.
Run Code Online (Sandbox Code Playgroud)

我使用的是 NPM v8.3.1。

实际上是否可以将一个包完全替换为另一个包,或者我是否误解了文档中所写的内容?

Ste*_*ins 7

根据@Phil 评论中链接的 Github 问题中的评论,我能够通过使用npm:前缀完全用另一个包覆盖一个包:

"overrides": {
  "dependency": {
    "node-sass": "npm:sass@1.54.7"
  }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,它没有被记录下来overrides,所以我不知道这个功能在多大程度上受支持,但它似乎至少在基本情况下有效。