From b41a7d34cdc13cc2b2ed36c6a8efdc1e88b8d480 Mon Sep 17 00:00:00 2001 From: hi2hi Date: Tue, 10 Dec 2024 06:16:52 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=A2=9E=E5=8A=A0=E5=AD=90?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E6=94=AF=E6=8C=81=EF=BC=8CRelease=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=AD=90=E7=9B=AE=E5=BD=95/nazhua/=E7=9A=84=E6=9E=84?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 24 ++++++++- package.json | 1 + src/utils/load-nezha-v0-config.js | 16 +++++- vite.config.js | 83 +++++++++++++++++-------------- 4 files changed, 86 insertions(+), 38 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d32b39c..2fa3767 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -78,6 +78,18 @@ jobs: - name: 打包v${{ steps.determine_version.outputs.version }}-cdn-loli.zip run: zip -r v${{ steps.determine_version.outputs.version }}-cdn-loli.zip dist + - name: 构建哪吒v0子目录版本 + env: + VITE_BASE_PATH: '/nazhua/' + VITE_NEZHA_VERSION: 'v0' + VITE_SARASA_TERM_SC_USE_CDN: '1' + VITE_USE_CDN: '1' + VITE_CDN_LIB_TYPE: 'jsdelivr' + run: npm run build + + - name: 打包v0-nazhua.zip + run: zip -r v0-nazhua.zip dist + - name: 构建哪吒v0版本 env: VITE_NEZHA_VERSION: 'v0' @@ -130,6 +142,16 @@ jobs: asset_name: v${{ steps.determine_version.outputs.version }}-cdn-loli.zip asset_content_type: application/zip + - name: Upload v0-nazhua.zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./v0-nazhua.zip + asset_name: v0-nazhua.zip + asset_content_type: application/zip + - name: Upload v0-dist.zip uses: actions/upload-release-asset@v1 env: @@ -162,7 +184,7 @@ jobs: echo -e "\n## 变更内容\n$(cat change.txt)" >> body.txt # 添加其他发布说明 - echo -e "\n哪吒V1请下载dist.zip\n哪吒V0请下载v0-dist.zip\nv${{ steps.determine_version.outputs.version }}-all.zip是全量包\nv${{ steps.determine_version.outputs.version }}-cdn-jsdelivr.zip是jsdelivr引用版\nv${{ steps.determine_version.outputs.version }}-cdn-loli.zip是cdnjs的loli.net引用版" >> body.txt + echo -e "\n哪吒V1请下载dist.zip\n哪吒V0请下载v0-dist.zip\n哪吒V0/nazhua/子目录需求请下载v0-nazhua.zip\nv${{ steps.determine_version.outputs.version }}-all.zip是全量包\nv${{ steps.determine_version.outputs.version }}-cdn-jsdelivr.zip是jsdelivr引用版\nv${{ steps.determine_version.outputs.version }}-cdn-loli.zip是cdnjs的loli.net引用版" >> body.txt # 更新发布说明 gh release edit v${{ steps.determine_version.outputs.version }} --notes-file body.txt diff --git a/package.json b/package.json index 97d3ec7..bb6cf68 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dev": "vite", "build": "vite build", "build:cdn": "cross-env VITE_SARASA_TERM_SC_USE_CDN=1 VITE_USE_CDN=1 vite build", + "build:nazhua": "cross-env VITE_BASE_PATH=/nazhua/ VITE_NEZHA_VERSION=v0 VITE_SARASA_TERM_SC_USE_CDN=1 VITE_USE_CDN=1 vite build", "preview": "vite preview", "lint": "eslint ." }, diff --git a/src/utils/load-nezha-v0-config.js b/src/utils/load-nezha-v0-config.js index eae98db..036c8f8 100644 --- a/src/utils/load-nezha-v0-config.js +++ b/src/utils/load-nezha-v0-config.js @@ -1,5 +1,19 @@ import config from '@/config'; +function getNezhaConfigUrl() { + const { nezhaPath } = config.nazhua; + if (nezhaPath.startsWith('http')) { + return nezhaPath; + } + const a = document.createElement('a'); + if (nezhaPath === '/nezha/' && import.meta.env.VITE_BASE_PATH !== '/') { + [a.href] = window.location.href.split(import.meta.env.VITE_BASE_PATH); + } else { + a.href = nezhaPath; + } + return a.href; +} + const configReg = (type) => new RegExp(`${type} = JSON.parse\\('(.*)'\\)`); // 格式化数据,保证JSON.parse能够正常解析 const unescaped = (str) => { @@ -9,7 +23,7 @@ const unescaped = (str) => { str2 = str2.replace(/\\\\/g, '\\'); return str2; }; -export default async () => fetch(config.nazhua.nezhaPath).then((res) => res.text()).then((res) => { +export default async () => fetch(getNezhaConfigUrl()).then((res) => res.text()).then((res) => { let resMatch = res?.match?.(configReg(config.nazhua.nezhaV0ConfigType)); // 尝试兼容不同的nezha前台主题 if (!resMatch) { diff --git a/vite.config.js b/vite.config.js index 58ec80e..e5f9eb9 100644 --- a/vite.config.js +++ b/vite.config.js @@ -7,52 +7,63 @@ import eslintPlugin from 'vite-plugin-eslint'; import svgLoader from 'vite-svg-loader'; import packageJson from './package'; -dotenv.config({ - path: '.env.development.local', -}); +let proxy; +if (process.env.NODE_ENV === 'development') { + dotenv.config({ + path: '.env.development.local', + }); + + proxy = { + '/api': { + target: process.env.API_HOST, + changeOrigin: true, + }, + '/ws': { + target: process.env.PROXY_WS_HOST || process.env.WS_HOST, + changeOrigin: true, + ws: true, + rewrite: (e) => { + if (process.env.PROXY_WS_HOST) { + return `/proxy?wsPath=${process.env.WS_HOST}`; + } + return e; + }, + }, + '/api/v1/ws/server': { + target: process.env.PROXY_WS_HOST || process.env.WS_HOST, + changeOrigin: true, + ws: true, + rewrite: (e) => { + if (process.env.PROXY_WS_HOST) { + return `/proxy?wsPath=${process.env.WS_HOST}`; + } + return e; + }, + }, + }; + + if (process.env.VITE_BASE_PATH === '/') { + proxy['/nezha/'] = { + target: process.env.NEZHA_HOST, + changeOrigin: true, + rewrite: (e) => e.replace(/^\/nezha/, ''), + }; + } +} + +// 读取版本号 process.env.VITE_APP_VERSION = process.env.VERSION || packageJson.version; // https://vite.dev/config/ export default defineConfig({ + base: process.env.VITE_BASE_PATH || '/', server: { host: '0.0.0.0', port: 3000, hmr: { overlay: false, }, - proxy: { - '/api': { - target: process.env.API_HOST, - changeOrigin: true, - }, - '/ws': { - target: process.env.PROXY_WS_HOST || process.env.WS_HOST, - changeOrigin: true, - ws: true, - rewrite: (e) => { - if (process.env.PROXY_WS_HOST) { - return `/proxy?wsPath=${process.env.WS_HOST}`; - } - return e; - }, - }, - '/api/v1/ws/server': { - target: process.env.PROXY_WS_HOST || process.env.WS_HOST, - changeOrigin: true, - ws: true, - rewrite: (e) => { - if (process.env.PROXY_WS_HOST) { - return `/proxy?wsPath=${process.env.WS_HOST}`; - } - return e; - }, - }, - '/nezha/': { - target: process.env.NEZHA_HOST, - changeOrigin: true, - rewrite: (e) => e.replace(/^\/nezha/, ''), - }, - }, + proxy, }, css: { preprocessorOptions: {