一、安装
官网
- 安装 NVM (Node Version Manager)
1 2 3 4 5
| curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash
. "$HOME/.nvm/nvm.sh"
|
- 安装并启用 Node.js
1 2 3 4 5
| nvm install 24
node -v
|
- 使用 Corepack 启用并固化 pnpm
1 2 3 4 5
| corepack enable pnpm
pnpm -v
|
二、常见故障
hexo 在新设备安装依赖、预览遇到的故障.
2.1 pnpm 无法安装包
1
| WARN The "pnpm" field in package.json is no longer read by pnpm
|
原因:pnpm v11 正式废弃了在 package.json 里的 “pnpm” 字段(如 onlyBuiltDependencies),导致之前的配置完全被忽略,进而导致依赖包本该进行的 postinstall 等构建脚本被静默跳过。
2.2 hexo 报错
Error: Cannot find module 'hexo-util'
- 运行其后提示
WARN No layout: index.html
原因:
- pnpm v11 做出了重大改变:
.npmrc 文件现在仅用于读取镜像源、Registry 认证相关的配置。以前团队习惯在 .npmrc 里写 shamefully-hoist=true,而在 v11 下该配置被直接无视。
- 由于没有了依赖提升(Hoist),pnpm 回归了最严格的树状软骨架,导致像
butterfly 这样需要动态加载 hexo-util(作为幽灵依赖)的主题无法在平级路径找到对应包,进而加载失败,引发 Hexo 渲染缺失,提示 No layout。
2.3 解决方案
- 清理废弃配置:
打开 package.json,把里面残留的 "pnpm": { "onlyBuiltDependencies": [...] } 一整段代码干净删除并保存,消除废弃警告。
- 开启 pnpm 项目级依赖提升(Shamefully Hoist):
在根目录运行该命令,pnpm 会自动将配置写入合规的本地配置文件(新版中已迁移至 pnpm-workspace.yaml 中):
1
| pnpm config set --location=project shamefullyHoist true
|
- 重建依赖网络:
删除受损的 node_modules 并重新安装,此时所有子级和幽灵依赖会被正确扁平化平铺到根目录:
1
| rm -rf node_modules && pnpm install
|
- 编译与预览:
1
| hexo clean && hexo server
|