首先需要确保你的系统全局安装了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启动项目即可

