问题1:pnpm i后 提示 Ignored build scripts: @parcel/watcher, esbuild, vue-demi...

核心原因是 pnpm 的安全机制默认禁止了依赖包的自动构建脚本(如 install、postinstall 等),目的是防止恶意脚本执行。这些被忽略的脚本通常是依赖包在安装时需要执行的 “构建步骤”(比如编译二进制文件、处理兼容性代码等),如果不运行可能导致依赖功能异常(例如运行时找不到模块、报语法错误等)。
解决方案:允许可信依赖的构建脚本
步骤如下:
-
运行 pnpm 的脚本审批命令在终端中执行:
pnpm approve-builds -
选择需要允许的依赖执行命令后,终端会显示所有被忽略脚本的依赖列表(包括
@parcel/watcher、esbuild、vue-demi等)。- 按 空格键 选中需要允许的依赖(建议全选这些常见的官方依赖,它们是安全的);
- 选中后按 回车键 确认(一般来说不会有啥风险,可以直接全部允许)。
-
重新安装依赖(可选)批准后,为了确保脚本正确执行,建议重新安装一次依赖:
pnpm install
或者使用:
1. 临时绕过方案(命令参数)
--unsafe-perm和allowed-dep-scripts=...是pnpm install命令的参数,需要跟在安装命令后使用:
完全绕过所有安全检查(不推荐,范围太广):
pnpm install --unsafe-perm只允许指定依赖的脚本(更安全,推荐):
pnpm install --allowed-dep-scripts=@parcel/watcher,esbuild,vue-demi这条命令的意思是:执行
pnpm install时,允许@parcel/watcher、esbuild、vue-demi这三个依赖运行它们的构建脚本。2. 永久白名单配置(配置文件)
allowed-dep-scripts=@parcel/watcher,esbuild是配置文件的内容,不是命令,需要手动创建配置文件:
- 步骤 1:在项目根目录(和
package.json同级)创建一个名为.npmrc的文件(注意文件名前有个点)。- 步骤 2:打开
.npmrc文件,粘贴以下内容并保存:allowed-dep-scripts=@parcel/watcher,esbuild,vue-demi- 步骤 3:之后正常运行
pnpm install即可,pnpm 会自动读取.npmrc中的配置,允许指定依赖的脚本运行,无需每次手动批准。
如何确认这些依赖是否安全?
1. 检查依赖的 “出身” 和知名度
这是最快速的判断方式,知名依赖通常经过大量用户验证,安全风险极低:
esbuild:由知名前端开发者 Evan Wallace 开发(曾参与 Chrome V8 团队),是前端圈广泛使用的超快打包工具,每周 npm 下载量过千万,属于 “明星级” 依赖。vue-demi:由 Vue 官方团队核心成员 Anthony Fu 开发,用于解决 Vue 2 和 Vue 3 兼容性问题,是 Vue 生态的官方配套工具。@parcel/watcher:属于 Parcel 打包工具 的核心依赖,Parcel 是主流前端构建工具之一,由正规团队维护。
这三个依赖均来自正规团队 / 知名开发者,属于前端生态中被广泛使用的 “基础设施级” 依赖,安全可信度极高。
2. 查看 npm 官方信息和安全报告
-
步骤 1:访问 npm 包页面搜索包名(如 esbuild 的 npm 页面),查看:
-
下载量:每周下载量越高(通常百万级以上),说明使用越广泛,被攻击或存在恶意代码的风险越低。
- 发布者:是否为官方账号(如
vue-demi的发布者是antfu,已认证)。 - 安全警告:npm 页面右侧若有 “Security score” 或 “Vulnerabilities” 提示,会明确标注已知漏洞(这三个包目前均无高危漏洞)。
-
-
步骤 2:用
npm audit检查项目漏洞在项目根目录运行:npm audit # 或 pnpm audit该命令会扫描所有依赖的已知安全漏洞,若这三个包有问题,会明确列出风险等级和修复建议。
问题2:命令冲突:npx only-allow npm
项目中存在一个 preinstall 脚本(在安装依赖前自动执行),其中运行了 only-allow npm 命令。这个命令的作用是强制项目只能使用 npm 作为包管理器,禁止使用 pnpm 或 yarn。

为什么会出现:
你现在用的是 pnpm i,但项目配置强制要求用 npm,所以脚本会阻断 pnpm 的安装流程,并提示你需要安装 only-allow 工具来执行这个检查。
解决办法:
- 方法 1(推荐):改用
npm安装依赖,符合项目的强制要求:npm install - 方法 2(如果需要用 pnpm):修改项目的
preinstall脚本,去掉only-allow npm限制:打开package.json,找到scripts中的preinstall字段,删除或注释掉这一行:
然后再重新运行// 原配置(需要修改) "scripts": { "preinstall": "npx only-allow npm" } // 修改后(允许任意包管理器) "scripts": { // "preinstall": "npx only-allow npm" // 注释或删除 }pnpm i即可。 - 也可以当pnpm i 后提示:
然后输入n,会出现npm ERR!,不用管,后面下一行直接pnpm run dev 就可以运行了;选择y你只能使用npm了。
2659

被折叠的 条评论
为什么被折叠?



