Преглед изворни кода

feat: open ssg (#749)

* chore: 构建产物push到gh-pages分支

* chore: 打开ssg

* chore: 减少构建依赖包

* chore: save

* chore: content write

* chore: opt install

* chore: manual add vercel config
chenjiawei.inizio пре 4 месеци
родитељ
комит
4e2a7a1b23
2 измењених фајлова са 68 додато и 33 уклоњено
  1. 34 32
      .github/workflows/deploy.yml
  2. 34 1
      apps/docs/rspress.config.ts

+ 34 - 32
.github/workflows/deploy.yml

@@ -3,72 +3,74 @@ on:
   workflow_dispatch
 
 concurrency:
-  group: "main-deploy-branch-workflow" # 唯一标识符,确保只运行一个实例
-  cancel-in-progress: false     # 不取消正在运行的实例,后续触发需要等待当前实例完成
+  group: "main-deploy-branch-workflow"
+  cancel-in-progress: false
 
 jobs:
   build:
     runs-on: ubuntu-latest
     permissions:
-      contents: read
+      contents: write
       pages: write
       id-token: write
     steps:
       - uses: actions/checkout@v3
         with:
           fetch-depth: 2
-      - name: Check if branch is main
-        run: |
-          if [ "$GITHUB_REF" != "refs/heads/main" ]; then
-            echo "Not on main branch, exiting workflow."
-            exit 1
-          fi
-          echo "On main branch, continuing workflow."
+          persist-credentials: true
+
       - name: Config Git User
         run: |
           git config --local user.name "dragooncjw"
           git config --local user.email "289056872@qq.com"
+
       - uses: actions/setup-node@v3
         with:
           node-version: 18
           registry-url: 'https://registry.npmjs.org/'
+
       - name: Rush Install
-        run: node common/scripts/install-run-rush.js install
+        run: node common/scripts/install-run-rush.js install -t @flowgram.ai/docs
+
       - name: Rush build
-        run: node common/scripts/install-run-rush.js build
+        run: node common/scripts/install-run-rush.js build -t @flowgram.ai/docs
+
       - name: Generate docs
         run: |
           cd apps/docs
           npm run docs
+
       - name: Copy auto-docs to en
         run: cp -r apps/docs/src/zh/auto-docs apps/docs/src/en/auto-docs
+
       - name: Build Doc site
         run: |
           cd apps/docs
           npm run build
+
       - name: Replace docs
         run: |
           rm -rf docs
           mv apps/docs/doc_build docs
-      - name: Upload artifact
-        uses: actions/upload-pages-artifact@v3
-        with:
-          path: docs
-          name: github-pages
 
-  deploy:
-    permissions:
-      contents: read
-      pages: write
-      id-token: write
-    needs: build
-    runs-on: ubuntu-latest
-    environment:
-      name: github-pages
-      url: ${{ steps.deployment.outputs.page_url }}
-
-    steps:
-      - name: Deploy to GitHub Pages
-        id: deployment
-        uses: actions/deploy-pages@v4
+      # 🔥 新增步骤:在 docs 目录下生成 vercel.json
+      - name: Create vercel.json
+        run: |
+          cat > docs/vercel.json <<EOF
+          {
+            "version": 2,
+            "buildCommand": "",
+            "outputDirectory": ".",
+            "cleanUrls": true,
+            "trailingSlash": false
+          }
+          EOF
 
+      # 🔥 推送到 gh-pages 分支
+      - name: Push to gh-pages branch
+        uses: peaceiris/actions-gh-pages@v3
+        with:
+          github_token: ${{ secrets.GITHUB_TOKEN }}
+          publish_dir: ./docs
+          publish_branch: gh-pages
+          force: true

+ 34 - 1
apps/docs/rspress.config.ts

@@ -46,7 +46,40 @@ export default defineConfig({
       },
     },
   },
-  ssg: false,
+  ssg: {
+    experimentalExcludeRoutePaths: [
+      /\/auto-docs\//,
+      // these pages do not support SSR
+      // document is not defined
+      '/en/examples/node-form/basic',
+      '/en/examples/node-form/array',
+      '/en/examples/node-form/dynamic',
+      '/en/guide/getting-started/create-fixed-layout-simple',
+      '/en/guide/getting-started/create-free-layout-simple',
+      '/en/examples/node-form/effect',
+      '/en/guide/advanced/fixed-layout/composite-nodes',
+      '/en/examples/playground',
+      '/en/examples/fixed-layout/fixed-composite-nodes',
+      '/en/examples/fixed-layout/fixed-layout-simple',
+      '/en/examples/free-layout/free-layout-simple',
+      '/en/examples/fixed-layout/fixed-feature-overview',
+      '/en/examples/free-layout/free-feature-overview',
+
+      '/examples/node-form/basic',
+      '/examples/node-form/array',
+      '/examples/node-form/dynamic',
+      '/guide/getting-started/create-fixed-layout-simple',
+      '/guide/getting-started/create-free-layout-simple',
+      '/examples/node-form/effect',
+      '/guide/advanced/fixed-layout/composite-nodes',
+      '/examples/playground',
+      '/examples/fixed-layout/fixed-composite-nodes',
+      '/examples/fixed-layout/fixed-layout-simple',
+      '/examples/free-layout/free-layout-simple',
+      '/examples/fixed-layout/fixed-feature-overview',
+      '/examples/free-layout/free-feature-overview',
+    ],
+  },
   // locales 为一个对象数组
   locales: [
     {