pnpm安装使用

结城 NodeJS 4 次阅读 788 字 发布于 2026-05-18 预计阅读时间: 4 分钟


首先需要确保你的系统全局安装了pnpm,可以执行以下的命令。

npm install -g pnpm

这个命令表示将pnpm安装到全局环境中,在之后的项目配置中便不用重新配置,直接可以使用。

可以使用version查看当前的版本

pnpm -version

将原有的npm​项目迁移到pnpm​,如果你的原有项目packge.json​中有硬编码绑定的npm​命令,一定要手动修改为适配pnpm的,不然会出现虚空依赖的情况。

"electron:dev": "npm run dev & npx electron . --dev",
"electron:build": "next build && npx electron-builder --win",
"electron:start": "npx electron ."

如果更换npm的包管理器,则需要进行下面的适配修改。最大的变动是修改了原有的npm包配置,改为了pnpm适配。

"electron:dev": "pnpm run dev & pnpm exec electron . --dev",
"electron:build": "next build && pnpm exec electron-builder --win",
"electron:start": "pnpm exec electron ."

修改完packge.json​的包配置文件后,现在需要删除npm​原有的packge-lock.json文件,避免依赖混乱。

npm​和pnpm​使用的lock文件不完全相同,所以我们需要重新生成。

如果是用的是新版的pnpm​,那么在完成了上述步骤后直接install​依赖即可,系统会自动帮你处理相关的包导入问题,不需要手动执行import​,pnpm​会自动根据原有的packge.json生成自己的依赖目录

pnpm install

等待依赖安装完成,如果你使用的是pnpm的新版本,还需要处理依赖安全性问题。

控制台中会输出以下的警告信息,提示你具有侵入形式安装的依赖现在被拦截安装,需要手动指定安装。

在 npm/Yarn 的时代,当你执行 npm install​ 时,所有的包在下载完成后,如果有定义构建类脚本(比如 postinstall​、install​、prebuild 等阶段的脚本),系统默认就会静默、自动地去执行它们。

这对类似 electron​、sharp​、node-sass​ 这类需要编译底层 C++ 环境的包是必须的,但同时也带来了巨大的供应链安全风险。恶意包经常利用这个漏洞,在 postinstall 阶段悄悄执行恶意代码(比如把你的环境变量或私钥发到外网)。

pnpm​ V9 开始,为了安全起见,官方默认把所有依赖的生命周期脚本(lifecycle scripts)全部拦截并禁止执行,除非你显式地允许它们。所以你才会看到这个 Ignored build scripts... 的拦截提示。

如果确定需要启用这些包,可以在控制台中启用这些包。

pnpm approve-builds

执行后,终端会出现一个交互式的菜单列表,列出所有想要执行脚本的包。你通过空格键勾选前三个核心包,然后按回车确认。 一旦你批准了,pnpm 会把这些授权,以后再 install 就不会拦截它们了。

等待所有依赖安装完成后,使用pnpm启动项目即可

给时光以生命,给岁月以文明
最后更新于 2026-06-15