npm 预安装脚本出现问题

问题描述 投票:0回答:2

我正在尝试从 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。

有什么想法吗?

npm pnpm
2个回答
7
投票

不幸的是,

preinstall
脚本仅在无参数安装期间执行。因此,当您运行
npm add @types/jest
时,该脚本将不会被执行,因此 npm 不会被阻止运行。

但是运行的时候会失败

npm install
.

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


0
投票

您可以指定在内部使用哪个包管理器

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。

© www.soinside.com 2019 - 2024. All rights reserved.