npm 预安装脚本的问题

trouble with npm preinstall script

我正在尝试从 npm 跳转到 pnpm。在我按照此处所述进行更改后,我发现一个有用的提示可以避免 运行ning“npm install”:https://pnpm.js.org/en/only-allow-pnpm

不幸的是,我的预安装生命周期覆盖没有被执行。看起来很简单,但是当我 运行 类似“npm install @types/jest”

时,npm install 仍然有效

package.json:

{
  "name": "react-sandbox",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "preinstall": "npx only-allow pnpm"
  }
}

npm 版本 6.14.2.

有什么想法吗?

不幸的是,preinstall 脚本仅在无参数安装期间执行。所以当你 运行 npm add @types/jest 时,该脚本将不会被执行,因此 npm 不会被阻止 运行ning.

但是运行宁npm install时会失败。

到目前为止,没有其他方法可以阻止 npm 的执行。