PM2 v5 到 v6 升级指南:核心变化与注意事项
PM2 从 v5 到 v6 的升级包含了一些重要的改进和破坏性变更(breaking changes)。以下是核心变化和需要注意的内容:
1. 主要破坏性变更(Breaking Changes)
(1) 模块系统重构
- PM2 v5:使用
pm2 install <module>
安装的模块(如pm2-logrotate
)是全局的,所有应用共享。 - PM2 v6:模块改为应用级别,每个应用可以独立配置模块,避免全局冲突。
(2) 配置文件格式调整
ecosystem.config.js
中的某些字段被废弃或重命名:// v5 的写法(已废弃) module.exports = { apps: [{ name: "app", script: "app.js", node_args: "--inspect", // v6 废弃,改用 `node_args` 的替代字段 watch: ["server", "client"] // v6 改为 `watch_dirs` }] } // v6 的正确写法 module.exports = { apps: [{ name: "app", script: "app.js", interpreter_args: "--inspect", // 替换 `node_args` watch_dirs: ["server", "client"] // 替换 `watch` }] }
(3) 日志行为变化
- 日志文件默认路径:从
~/.pm2/logs
改为/var/log/pm2
(Linux)或系统标准日志目录。 - 日志轮转策略:默认的
pm2-logrotate
配置更严格(如压缩旧日志)。
2. 新增功能
(1) 更好的 TypeScript 支持
- 可直接运行 TypeScript 文件(需全局安装
ts-node
):pm2 start app.ts --interpreter="ts-node"
(2) 增强的集群模式
- 动态扩容缩容:通过命令动态调整集群实例数量:
pm2 scale <app-name> +2 # 增加 2 个实例
(3) 模块联邦(Module Federation)
- 支持模块联邦(需结合 Webpack 5+),优化微前端应用的部署。
3. 性能优化
- 启动速度提升:守护进程(daemon)初始化速度优化约 30%。
- 内存占用降低:减少约 20% 的内存消耗。
4. 升级注意事项
- 备份配置文件:修改
ecosystem.config.js
中的废弃字段。 - 模块迁移:全局模块需重新安装为应用级别:
pm2 uninstall pm2-logrotate # 卸载旧模块 pm2 install pm2-logrotate --app <app-name> # 安装到指定应用
- 日志路径检查:确保应用有权限写入新的日志目录。
5. 升级步骤
# 1. 更新全局 PM2
npm install pm2@latest -g
# 2. 关闭旧版本 PM2 守护进程
pm2 kill
# 3. 启动 PM2 并验证版本
pm2 ls
pm2 --version # 应显示 v6.x
6. 兼容性说明
- Node.js 版本:PM2 v6 需要 Node.js >= 12.22.0(建议使用 Node.js 14+)。
- 旧项目适配:如果遗留项目无法升级,可通过
pm2@5
临时运行:npm install pm2@5 -g
总结
- 推荐升级:PM2 v6 性能更好、功能更现代,适合新项目。
- 谨慎操作:对现有项目升级时,需测试配置文件兼容性。