打包与部署
构建
npm run build
构建会依次执行:抓取发行版数据(scripts/fetch-releases.mjs)→ Nuxt 构建 → 预渲染文档站路由为静态 HTML。
产物在 .output/ 目录:
.output/
├─ server/index.mjs # Nitro 服务入口
└─ public/ # 静态资源(含文档站的 *.html)
├─ docs/guide/index.html # ← 文档页静态 HTML
├─ _nuxt/ # 前端资源
└─ index.html # 官网首页(原样拷贝自 public/)
文档改动需要重新构建
文档页是构建期预渲染的静态文件,因此线上修改内容必须重新 npm run build 并部署。
开发环境下 npm run dev 是即时生效、无需重建。
::
启动服务
node .output/server/index.mjs
默认监听 3000 端口,可用环境变量指定:
PORT=8880 node .output/server/index.mjs
pm2 托管
# --no-daemon 让进程在前台运行,容器场景下必须加,否则脚本执行完容器会一直重启
PORT=8880 pm2 start /root/nodehost/.output/server/index.mjs --no-daemon
start.sh 里可以这样写:
#!/bin/sh
PORT=8880 pm2 start /root/nodehost/.output/server/index.mjs --no-daemon
Docker 部署流程
服务器上的实际发布流程(打包 → 上传 → 解压 → 重启):
# 本地:打包并上传
npm run build
tar -cf .output.tar ./.output/
# 服务器:停服 → 替换 → 重启
docker stop nuxt-p2p-webrtc-sys
rm -rf ./.output/
tar -vxf .output.tar
docker restart nuxt-p2p-webrtc-sys
别忘了取回数据文件
统计数据库存在容器根目录,重建容器前请先拷出来:
docker cp nuxt-p2p-webrtc-sys:/stats.db ./
::
文档站的部署相关配置
| 位置 | 作用 |
|---|---|
content.config.ts | 内容集合定义(内容源 = content/) |
nuxt.config.ts 的 routeRules | /docs/** 开 SSR + 预渲染;其余路由保持 SPA |
nuxt.config.ts 的 nitro.prerender.routes | 待预渲染的文档路由清单(来自 docs-nav.ts) |
server/routes/sitemap.xml.get.ts | 站点地图(文档页 lastmod 取源文件 mtime) |
server/routes/raw/[...slug].md.get.ts | 原文 Markdown 端点(AI 友好) |
环境变量
| 变量 | 说明 |
|---|---|
PORT | 服务端口 |
SITE_URL | 站点对外域名(sitemap / llms.txt 中使用);不设置则回退到请求的 Origin |
