我正在尝试从 npm 跳转到 pnpm。 我发现了一个有用的提示,可以在进行此处所述的更改后避免运行“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 不会被阻止运行。
但是运行的时候会失败
npm install
.
到目前为止,没有其他方法可以阻止 npm 执行。
您可以指定在内部使用哪个包管理器
package.json
添加以下行:
"engines": {
"node": ">= 18",
"npm": "Please use pnpm instead of npm to install dependencies",
"yarn": "Please use pnpm instead of yarn to install dependencies",
"pnpm": ">= 8"
}
在这种情况下
npm install
会在安装后显示一条错误消息,告诉开发人员不要使用npm。它仍然会尝试安装依赖项,但不会出现锁定文件或node_modules。