打包与部署

构建

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
部署时建议设置 SITE_URL

否则 sitemap 里写进的是请求来源地址,内网 / 回环访问时会产生不可用的 URL。 ::

开发调试提示

  • 构建产物体积主要来自前端全量打包。可优化方向:按路由懒加载、Vuetify 按需引入、细化 manualChunks 分包策略。
  • 如果 dev server 前端异常,先确认端口(默认 7009)没有被旧实例占用 —— 两个实例共享 .nuxt 会互相干扰。

相关