pnpm approve-builds报错

首次安装依赖或某些依赖的构建脚本被忽略时,pnpm 会拦截这些脚本的自动执行,并提示您运行 pnpm approve-builds 来选择允许哪些包运行脚本。这通常发生在项目依赖中包含可能执行敏感操作的包时

1. ‌pnpm 安全机制

  • 默认行为 ‌:pnpm 会拦截 postinstall 等敏感脚本,防止自动执行潜在恶意代码3。这导致依赖包的构建脚本(如 core-jsesbuild)被忽略。
  • 触发条件‌:当安装的依赖包包含构建脚本时,pnpm 会提示需要手动批准23。

2. ‌差异原因

  • 环境差异‌:另一个项目可能未触发此安全机制,原因可能包括:

    • 依赖包不同 ‌:未包含 core-jsesbuild 等需要构建脚本的依赖2。
    • pnpm 版本差异‌:旧版本 pnpm 可能未启用此安全特性2。
    • 配置差异 ‌:项目根目录存在 .npmrc 文件,配置了 allowed-dep-scripts 参数允许特定依赖脚本运行45。
    • CI/CD 环境 ‌:CI 环境可能通过环境变量(如 CI=true)或脚本(如 pnpm approve-builds)自动批准构建脚本36。

3. ‌解决方案

  • 临时允许 ‌:在安装命令后添加 --unsafe-perm 参数(不推荐,范围太广)4。
  • 永久配置 ‌:在项目根目录创建 .npmrc 文件,添加 allowed-dep-scripts=core-js,esbuild45。
  • 手动批准 ‌:运行 pnpm approve-builds 命令,交互式选择允许的依赖(输入 a 允许全部)26。

4. ‌安全建议

  • 风险评估 ‌:确保批准的构建脚本(如 core-jsesbuild)来自可信来源3。
  • 版本更新‌:检查 pnpm 是否为最新版本,旧版本可能存在安全漏洞2。

解决步骤

  1. 运行命令‌:在项目根目录下执行以下命令:

    css 复制代码
    bashCopy Code
    pnpm approve-builds

    执行后,终端会进入一个交互式界面,列出被忽略的依赖包(例如 core-jsesbuild@vue-office/docx 等)。‌12

  2. 选择依赖‌:

    • 允许全部依赖 ‌:直接输入 a(代表 all),然后按回车。这是最快捷的方式,适用于您信任所有列出的包。‌24
    • 选择性允许 ‌:使用空格键( )勾选特定包,再按回车。例如,如果只信任 core-jsesbuild,可勾选它们后确认。‌12
  3. 重新安装并构建 ‌:

    完成选择后,重新安装依赖并运行构建:

    arduino 复制代码
    bashCopy Code
    pnpm install && pnpm run build

    被批准的依赖将正常执行脚本,构建应成功。‌‌

相关推荐
小白x18 小时前
Echarts常用配置
前端
hello_Code18 小时前
css和图片主题色“提取”
前端
小杨梅君18 小时前
Vue3与iframe通信方案详解:本地与跨域场景
前端·vue.js
IT_陈寒18 小时前
Redis高频踩坑实录:5个不报错但会导致性能腰斩的'隐秘'配置项
前端·人工智能·后端
CoolerWu18 小时前
2025 · 我与 AI / Vibe Coding 的一年
前端·后端
张风捷特烈18 小时前
AI 四格笑话爆火,我做了什么?
前端·aigc
东方-教育技术博主18 小时前
IDEA 配置electron开发环境
前端·javascript·electron
AC赳赳老秦18 小时前
DeepSeek-Coder vs Copilot:嵌入式开发场景适配性对比实战
java·前端·后端·struts·mongodb·copilot·deepseek
一只专注api接口开发的技术猿18 小时前
智能决策数据源:利用 1688 商品详情 API 构建实时比价与供应链分析系统
大数据·前端·数据库
程序员修心19 小时前
CSS 选择器知识点
前端·css·css3