不过,现在这个问题已经有了理想的解决方案。插件、Web 端和 CLI 三种工具都能帮你自动生成涵盖这些内容的完整部署章节。它们的核心思路非常巧妙:插件会自动读取你的 package.json,从中识别出构建脚本;Web 端则支持通过模板锁定内容,还能对 Docker 和 HTTPS 配置进行专门增强;CLI 工具更为灵活,既可以追加到现有文档,也能直接覆盖已有的部署模块。

接下来,我们逐一介绍这几种工具的具体用法。
使用 VS Code 插件生成带部署章节的完整 README
这种方法最适合你已经通过 VS Code 打开项目根目录的场景。前提条件是项目中必须包含 package.json 或 vite.config.ts 这类构建配置文件,因为插件需要依赖它们来推断你的打包脚本和服务端口。
第一步: 确认当前工作区就是项目根目录,最关键的是,里面必须有一个 【package.json】 文件。如果没有它,插件就无法获知你到底使用什么命令来构建和预览,后续操作也就无法进行。
第二步: 按下快捷键(Windows/Linux 用户使用 Ctrl+Shift+P,Mac 用户使用 Cmd+Shift+P),调出命令面板,输入并执行 “CodeGeeX: Generate README”。
第三步: 等待大约十秒钟,插件就会自动生成一份 README.md 文件并在编辑器中打开。此时,你需要立即检查文档末尾,确认是否出现了 “## 部署说明” 这个章节。如果没有,说明你项目的 package.json 中可能缺少明确的 scripts.build 或 scripts.preview 字段,你需要手动补全这些字段后重新尝试一次。
第四步: 找到 “## 部署说明” 下方的子章节,仔细核对是否包含了 “本地构建”、“Nginx 静态托管” 和 “环境变量注入” 这三块核心内容。尤其要注意,Nginx 的配置块里应当包含类似 location / { root /var/www/my-app; try_files $uri $uri/ /index.html; } 的关键路由回退逻辑,这是单页应用部署时最容易踩坑的地方。
通过 Web 端上传压缩包定制部署章节
如果你需要同时为多个前端项目生成部署说明,并且要求风格完全一致,同时还要强制包含 Docker 部署流程,那么使用 Web 端操作会比插件更可控。网页版支持模板锁定和字段增强,效率更高。
方法一: 访问 CodeGeeX 官网的文档生成页面,点击“上传项目”,选择你打包好的项目压缩包(例如 frontend-v2.3.zip)。这里有一个小细节:压缩包的顶层目录应该是你的项目名称,不要再额外嵌套一层父文件夹,否则解析可能会出错。上传后,在模板下拉框中选择 “Frontend Deployment Ready” 模板。
方法二: 上传完成后,在“增强选项”里勾选 “生成 Dockerfile 说明” 和 “添加 Nginx HTTPS 重定向配置”。确认后点击“开始生成”,下载生成的 README.md 文件即可。
值得注意的是,如果你的项目使用了 Vite + SSR 模式,Web 端会自动识别 server.mjs 或 entry-server.js 文件,并在部署章节中自动插入一条启动命令:node -r dotenv/config server.mjs dotenv_config_path=.env.production。这个设计很贴心,无需你再手动查找和补充。
使用 CLI 工具注入独立部署模块
这种方法更适合将部署说明当作一个可复用的模块,嵌入到你现有的 README 中。它不会覆盖原有内容,只会追加一个结构化的区块,特别适合在 CI 流程中自动更新部署信息。
1、 终端进入项目根目录,执行以下命令:
codegeex readme --section deployment --lang zh --template frontend-nginx
2、 命令运行后,会在 README.md 的底部新增一个 “## 部署说明” 章节,并且内容会严格遵循 Nginx 的最佳实践。你会看到其中包含 upstream 的定义、gzip 压缩的启用设置、CSP 头的一些建议值,以及针对 /assets/ 路径的 expires 1y 配置。
3、 如果你想切换成 Docker 的部署模板,只需将参数改为 --template frontend-docker。生成的内容会立即替换为 Dockerfile 的构建步骤、multi-stage 构建说明以及 docker-compose.yml 的示例片段。
4、 注意一个默认行为:如果项目中已经存在 “## 部署说明” 章节,CLI 会跳过不处理。如果你确实需要覆盖它,必须显式加上 【--force-section】 参数,否则它不会修改你原有的内容。
