{
"scripts": {
"preinstall": "npx only-allow pnpm"
}
}
解释:
-
preinstall
:-
这是 npm/yarn/pnpm 的一个生命周期脚本钩子(lifecycle hook),会在
install
命令执行之前自动触发。 -
当用户运行
npm install
、yarn install
或pnpm install
时,会先执行preinstall
脚本。
-
-
npx only-allow pnpm
:-
npx
是 npm 的一个工具,用于临时下载并执行包。 -
only-allow
是一个 npm 包(由 pnpm 团队开发),用于强制限制项目只能使用特定的包管理器(这里是pnpm
)。 -
当用户尝试用非
pnpm
的命令(比如npm install
或yarn install
)安装依赖时,only-allow pnpm
会报错并阻止安装。
-
作用:
-
这是一种包管理器锁定 技术,确保项目统一使用
pnpm
安装依赖,避免因混用 npm/yarn/pnpm 导致的潜在问题(如依赖版本不一致、锁文件冲突等)。 -
常见于开源项目或团队协作项目,用于规范开发环境。
示例行为:
-
如果用户运行
npm install
,会先触发preinstall
脚本,然后报错:ERROR: This repository requires using pnpm as the package manager.
-
只有运行
pnpm install
才能正常安装依赖。
类似用法:
如果想强制使用 yarn
或 npm
,可以改为:
{
"scripts": {
"preinstall": "npx only-allow yarn"
// 或
"preinstall": "npx only-allow npm"
}
}