“preinstall“: “npx only-allow pnpm“
{"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"}
}