Debian 环境下 Node.js 文档编写与发布全流程
一 环境准备与工具选型
sudo apt update && sudo apt install -y nodejs npmcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash,随后 source ~/.bashrc && nvm install nodenpm i -g jsdoc swagger-jsdoc swagger-ui-express二 项目文档结构与规范
docs/:存放生成的站点与静态资源src/:源码test/:测试README.md:项目概览、安装、快速开始CONTRIBUTING.md:贡献指南.github/workflows/docs.yml:CI 自动构建与发布getting-started.md)三 代码即文档 JSDoc 实践
npm i -D jsdocjsdoc.json:
{ "source": { "include": ["src"], "exclude": ["node_modules"] }, "opts": { "destination": "docs/jsdoc" } }/** * 计算两数之和 * @param {number} a - 第一个加数 * @param {number} [b=0] - 第二个加数,默认 0 * @returns {number} 两数之和 * @example * sum(2, 3) // 5 */function sum(a, b = 0) { return a + b; }npx jsdoc -c jsdoc.jsondocs/jsdoc 加入站点导航,并在 package.json 增加脚本:
"docs:jsdoc": "jsdoc -c jsdoc.json"四 API 文档 OpenAPI Swagger 实践
npm i swagger-jsdoc swagger-ui-expressswagger.js):
const swaggerJSDoc = require('swagger-jsdoc'); const swaggerUi = require('swagger-ui-express'); const express = require('express'); const app = express();const swaggerDefinition = { openapi: '3.0.0', info: { title: 'Node.js API', version: '1.0.0' }, servers: [{ url: 'http://localhost:3000' }] };const options = { swaggerDefinition, apis: ['./routes/*.js'] }; const swaggerSpec = swaggerJSDoc(options);app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec)); app.listen(3000);/** * @swagger * /users: * get: * summary: 获取用户列表 * responses: * 200: * description: 用户数组 * content: * application/json: * schema: * type: array * items: * type: object * properties: * id: { type: integer, example: 1 } * name: { type: string, example: John Doe } */五 本地预览与持续集成发布
npx http-server docs -p 8080http://localhost:3000/api-docs.github/workflows/docs.yml):
on: push: branches: [ main ]actions/checkout@v4npm cinpm run docs:jsdocpeaceiris/actions-gh-pages@v3 将 docs/ 推送到 gh-pages 分支package.json 增加脚本:"docs": "jsdoc -c jsdoc.json && cp -r docs/jsdoc docs-site"(按需拷贝静态资源)README 给出直达链接。