Files
code-docs/jilu.md
T
2026-04-29 19:03:25 +08:00

10 KiB
Raw Blame History

Read

Read

Read , lines 1 to 120

Read

Read , lines 1 to 50

Read

Read

Read

Read , lines 1 to 40

Read

Read , lines 1 to 50

Read

Read , lines 1 to 30

Let me check for the garbled files:

Ran terminal command: find /opt/cyy/code-docs -maxdepth 1 -type f | sort && echo "---" && ls -la /opt/cyy/code-docs/ | head -30

Found them. Both are empty files (size 0) with garbled names. Let me delete them:

Ran terminal command: cd /opt/cyy/code-docs && find . -maxdepth 1 -name "2p" -delete && find . -maxdepth 1 -name $',\xef\xbf\xbd0p>' -delete 2>/dev/null; find . -maxdepth 1 -type f -size 0 ! -name "." | head -20

Ran terminal command: cd /opt/cyy/code-docs && ls -la | grep "^-rw.* 0 " | awk '{print $NF}' && find . -maxdepth 1 -type f -size 0 -exec rm -v {} ;

Ran terminal command: cd /opt/cyy/code-docs && find . -maxdepth 1 -type f -size 0 | wc -l && ls | head -20

Both garbled files removed. Now let me read the remaining docs for the full analysis:

Read

Read

Now I have a complete picture. Let me compose the professional analysis and upgrade prompt:


两个乱码文件处理完毕

已删除根目录下的两个空白乱码文件:

  • 2p(空文件)
  • ,°0p>;°8p>...Rich2p>PEd...(空文件,名称为二进制乱码)

项目分析报告 + 系统升级提示词


一、项目现状分析

维度 当前状态 风险等级
Docusaurus 版本 2.0.0-alpha.73 (2021年) 🔴 极高
React 版本 17.0.1 🟠
Node.js (CI) 12 (EOL) 🔴 极高
部署方式 FTP 明文传输 🔴 安全风险
Algolia Key 硬编码在公开配置文件 🔴 信息泄露
TypeScript 未使用 🟡
包管理器 yarn.lock + package-lock.json 混用 🟠

二、问题点清单

严重问题:

  1. @docusaurus/core: 2.0.0-alpha.73 — 当前稳定版为 3.7.x,跨越近3年迭代,含大量Breaking Changes
  2. Node.js 12 已于2022年4月正式 EOLCI/CD 中仍在使用
  3. Algolia apiKey 明文暴露在 docusaurus.config.js
  4. remark-math@3 + rehype-katex@4 与 Docusaurus 3.x 使用的 MDX 3.x 不兼容
  5. .DS_Store 文件未被 .gitignore 过滤,已提交到仓库

架构问题: 6. 纯 JavaScript 项目,Docusaurus 3.x 全面支持 TypeScript,缺失类型安全 7. FTP 部署方案无加密、无回滚、无原子发布能力 8. GitHub Actions 使用过期版本:actions/checkout@v2.3.2actions/setup-node@v2-beta 9. yarn.lock 和 package-lock.json 同时存在,包管理器冲突 10. CI 无分支过滤,每次 push(包括草稿分支)都会触发生产部署

内容问题: 11. HomepageFeatures.js 仍为 Docusaurus 默认英文占位内容 12. 依赖外部图片 CDN(s3.ax1x.comz3.ax1x.com)存在链接失效风险 13. i18n 配置了 en/zh-cn 双语,但无对应翻译文件 14. Blog 文章内含硬编码域名链接 http://docs.yaoyuan.io/... 15. Tutorial 目录仍为 Docusaurus 官方示例内容,未替换为项目自有文档


三、系统升级提示词(可直接用于 AI 对话)

你是一名资深全栈工程师,精通 Docusaurus、React、GitHub Actions 和技术文档工程。
我需要你对下述项目进行全面系统升级,请严格按照优先级顺序执行,给出完整可执行的代码和配置。

## 项目背景
- 项目名称:code-docsCodeDocs 编程文档站)
- 当前框架:Docusaurus v2.0.0-alpha.73React 17,纯 JS
- 内容:中文技术文档,包含 LeetCode、Spring Boot、Spring Cloud、React、Vue 专题
- 部署:GitHub Actions → FTP → 自托管服务器(http://docs.yaoyuan.io

---

## 升级任务列表(按优先级排序)

### P0 - 核心框架升级

**1. 升级 Docusaurus 3.x**
- 将 `@docusaurus/core` 和 `@docusaurus/preset-classic` 从 `2.0.0-alpha.73` 升级到最新稳定版 `^3.7.0`
- 同步升级所有 peer dependencies`react@^18.3`、`react-dom@^18.3`
- 迁移 `docusaurus.config.js` 为 `docusaurus.config.ts`TypeScript 配置)
- 替换已废弃 API
  - `module.exports` → `export default` (ESM)
  - `DocusaurusConfig` 类型导入路径变更
  - `themeConfig.algolia` 结构校验更新
- 更新 MDX 依赖以兼容 MDX 3.x
  - `remark-math` 升级到 `^6.0``rehype-katex` 升级到 `^7.0`
  - 检查所有使用 MDX JSX 语法的 `.md` 文件(如 `docs/intro-docs.md` 中的 `<Tabs>`),确保兼容 MDX 3 严格模式

**2. 升级 TypeScript 支持**
- 初始化 `tsconfig.json`(继承 `@docusaurus/tsconfig`
- 将 `src/` 目录下所有 `.js`/`.jsx` 文件迁移为 `.ts`/`.tsx`
- 为 `HomepageFeatures`、`index` 页面添加完整 Props 类型声明
- 升级 `babel.config.js` → `babel.config.ts`

---

### P1 - 安全修复

**3. 消除 Algolia Key 泄露风险**
- 将 `docusaurus.config` 中硬编码的 Algolia `apiKey`、`appId` 提取到环境变量
- 创建 `.env.local` 文件(加入 `.gitignore`):

ALGOLIA_APP_ID=D8PEAPGLZ3 ALGOLIA_API_KEY=<your_search_only_api_key>

- 在配置中使用 `process.env.ALGOLIA_APP_ID` 引用
- 在 GitHub Actions 中添加对应 `secrets`

**4. 修复 `.gitignore`**
添加以下条目:

.DS_Store .env.local .env.*.local


---

### P2 - CI/CD 现代化

**5. 重写 GitHub Actions 工作流**
```yaml
# .github/workflows/deploy.yml
name: Deploy to Production

on:
  push:
    branches: [main]          # 仅 main 分支触发,移除草稿分支误部署
  pull_request:
    branches: [main]          # PR 仅做构建校验,不部署

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4           # 升级到 v4
      - uses: actions/setup-node@v4         # 升级到 v4
        with:
          node-version: '20'                # Node 20 LTS
          cache: 'npm'                      # 启用依赖缓存

      - name: Install dependencies
        run: npm ci                         # 使用 ci 替代 install,更稳定

      - name: Build
        run: npm run build
        env:
          ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }}
          ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }}

  deploy:
    needs: build
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
    steps:
      # 推荐迁移至 GitHub Pages 或 SSH 部署,若保留 FTP 则升级:
      - uses: SamKirkland/FTP-Deploy-Action@v4.3.5
        with:
          server: ${{ secrets.FTP_SERVER }}
          username: ${{ secrets.FTP_USER }}
          password: ${{ secrets.FTP_PWD }}
          local-dir: ./build/
          server-dir: code-docs/www/

架构建议:将 FTP 部署迁移至 GitHub Pages(零成本)或 Vercel(自动预览 PR),消除明文传输风险。


P3 - 内容与架构优化

6. 首页本地化改造src/components/HomepageFeatures.tsx 的英文占位内容替换为项目实际特性:

const FeatureList: FeatureItem[] = [
  {
    title: '📚 系统化文档',
    description: '涵盖后端(Spring Boot/Cloud)、前端(React/Vue)和算法(LeetCode),分门别类,清晰索引。',
  },
  {
    title: '⚡ 快速检索',
    description: '集成 Algolia DocSearch,毫秒级全文检索,快速定位任意知识点。',
  },
  {
    title: '🌐 持续更新',
    description: '由技术团队持续维护,定期同步最新技术栈实践和面试题解析。',
  },
];

移除对 undraw_docusaurus_*.svg 的依赖(这些文件在 img 中可能不存在)。

7. 清理默认内容

  • 删除 tutorial-basics 和 tutorial-extras 目录(Docusaurus 默认示例,与项目无关)
  • 删除 2021-01-01-hello-world.md 和 2021-01-01-hola.md(官方示例博客)
  • 统一 Blog 文章中的链接为相对路径,移除硬编码域名

8. 图片资源本地化 将外部 CDN 图片(s3.ax1x.comz3.ax1x.com)下载到 img 目录, 替换为相对路径引用,避免 CDN 失效导致图片断链。

9. 统一包管理器 删除 package-lock.json(保留 yarn.lock),或删除 yarn.lock(保留 npm), 在 package.json 中声明 "packageManager": "npm@10.x.x""yarn@4.x.x" 固定版本。

10. 完善 i18n(可选) 当前 docusaurus.config 配置了 zh-cn + en 双语,但缺少翻译文件。 执行 npm run write-translations 生成翻译模板,或移除 en locale 以减少维护成本。


升级注意事项

  1. Breaking Change 重点Docusaurus 3.x 使用 MDX 3,对 {} 中的 HTML 实体、未闭合标签更严格,升级后需逐一检测现有 .md/.mdx 文件:

    npx docusaurus-mdx-checker
    
  2. KaTeX 配置变更remark-math v6+ 和 rehype-katex v7+ 的引入方式从 require() 改为 ES Module importdocusaurus.config.ts 需同步调整

  3. React 18 并发模式ReactDOM.render 已废弃,检查是否有自定义入口文件使用旧 API

  4. 升级顺序建议

    Step 1: 先在新分支 feat/upgrade-v3 上操作
    Step 2: 升级依赖 → Step 3: 修复 MDX 兼容性 → Step 4: 本地构建验证
    Step 5: 修复 CI/CD → Step 6: 合并到 main 触发部署
    

升级后验证清单

  • npm run build 零报错、零警告
  • npm run start 本地预览正常
  • 中文搜索正常(Algolia
  • KaTeX 数学公式正常渲染
  • 深色模式外观正常
  • GitHub Actions 仅 main 分支触发部署
  • 无硬编码密钥在代码仓库中