项目中如何强制使用pnpm

. 使用 packageManager 字段(推荐)

在项目的 package.json 中添加 packageManager 字段(官方规范):

perl 复制代码
{
  "packageManager": "pnpm@9.15.7"
}

2. 添加 preinstall 脚本(强制拦截)

package.jsonscripts 中加入一个 preinstall 脚本,检测当前是否为 pnpm:

json 复制代码
{
  "scripts": {
    "preinstall": "npx only-allow pnpm"
  }
}

only-allow 是一个轻量工具,会阻止使用 npm/yarn 安装依赖

  • 当有人运行 npm installyarn 时,会直接报错并退出。
  • 需要确保 only-allow 本身不需要被安装(它由 npx 临时调用)。

3. 文档说明 + .npmrc(辅助)

  • 在 README 中明确说明:"本项目使用 pnpm,请先安装 pnpm 并使用 pnpm install 安装依赖"。

  • 可选:在项目根目录添加 .npmrc 文件,设置:

    禁用 npm 自动安装 peerDependencies(pnpm 默认行为)

    并提醒用户不要用 npm

虽然不能强制阻止,但可配合其他方式增强提示。

总结(推荐组合)

json 复制代码
// package.json
{
  "packageManager": "pnpm@9.15.7",
  "scripts": {
    "preinstall": "npx only-allow pnpm"
  }
}

这样既符合现代规范,又能强制拦截错误的安装方式,适合团队协作项目。

相关推荐
特立独行的猫a1 分钟前
C++轻量级Web框架介绍与对比:Crow与httplib
开发语言·前端·c++·crow·httplib
周航宇JoeZhou3 分钟前
JB2-7-HTML
java·前端·容器·html·h5·标签·表单
代码小库5 分钟前
【课程作业必备】Web开发技术HTML静态网站模板 - 校园动漫社团主题完整源码
前端·html
珹洺12 分钟前
Bootstrap-HTML(二)深入探索容器,网格系统和排版
前端·css·bootstrap·html·dubbo
BillKu12 分钟前
VS Code HTML CSS Support 插件详解
前端·css·html
xixixin_18 分钟前
【React】中 Body 类限定法:优雅覆盖挂载到 body 的组件样式
前端·javascript·react.js
换日线°24 分钟前
NFC标签打开微信小程序
前端·微信小程序
张3蜂2 小时前
Python 四大 Web 框架对比解析:FastAPI、Django、Flask 与 Tornado
前端·python·fastapi
南风知我意9572 小时前
【前端面试5】手写Function原型方法
前端·面试·职场和发展
qq_12498707532 小时前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计