---
description: Node 后端用 pm2 部署（releases + 软链原子切换，pm2 reload 平滑重启）
applicable: [node, backend]
requires: [node, pm2]
buildSource: artifact
variables:
  - key: deployRoot
    label: 部署根目录
    default: "/opt/{{project}}"
    required: true
  - key: appName
    label: pm2 应用名
    required: true
  - key: startScript
    label: 启动入口（相对 current）
    default: "dist/main.js"
    required: false
  - key: healthUrl
    label: 健康检查 URL
    default: "http://127.0.0.1:3000/health"
    required: false
---

# Node · pm2

本地 `pnpm build` 后把产物（含 package.json / dist / node_modules 或锁文件）打包上传，
releases 软链切换后用 pm2 reload 平滑重启（zero-downtime）。

> 共享 `.env`、`logs/` 等建议放进 target 的 release.shared，避免随版本走。

```bash stage:release on:target
cd {{deployRoot}}/current && \
( pm2 reload {{appName}} || pm2 start {{startScript}} --name {{appName}} ) && \
pm2 save
```

```bash stage:health on:target
curl -fsS {{healthUrl}} >/dev/null && pm2 describe {{appName}} | grep -q online
```
