项目中如何强制使用pnpm

. 使用 packageManager 字段(推荐)

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

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

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

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

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

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

  • 当有人运行 npm install 或 yarn 时,会直接报错并退出。
  • 需要确保 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"
  }
}

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

相关推荐
全栈项目管理程序猿8 小时前
ArcGIS JS 基础教程(29):CSVLayer 表格点位图层
前端·javascript
骑着蜗牛撵大象3278 小时前
豆包 Seed 驱动的记账智能体:从拍票抽取到月报生成的全链路落地记录
java·前端·javascript·结构化输出·豆包seed·多模态识别·记账系统
溪语流沙8 小时前
【Web全栈进阶】前端世界观:现代工具链与框架为什么存在
前端·javascript·vue.js
kyriewen9 小时前
我逐个测了 JSON.stringify 的 7 个坑:第 1 个就在丢数据
前端·javascript·程序员
积流成海9 小时前
用代码实现哈希计算器:Web Crypto API 实战
前端·算法·哈希算法·哈希函数·盘子工具站
data analyse 4569 小时前
服务端访问日志聚合 PV 与 UV 怎么实现?日志采集与口径设计
大数据·前端·数据分析
JavaGuide9 小时前
DeepSeek Harness 重磅更新,Codex、Claude Code 子智能体进官方插件列表了,还有 Git 工作树和思考翻译!
前端·后端
小羊没烦恼!10 小时前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
Eiceblue10 小时前
使用 Python 实现 Excel 行列转置(保留单元格样式)
前端·python·excel
西西学代码11 小时前
像素和颜色之间的转换(Flutter)
前端·javascript·flutter