增加子目录支持,Release添加子目录/nazhua/的构建

This commit is contained in:
hi2hi 2024-12-10 06:16:52 +00:00
parent 557951ede3
commit b41a7d34cd
4 changed files with 86 additions and 38 deletions

View File

@ -78,6 +78,18 @@ jobs:
- name: 打包v${{ steps.determine_version.outputs.version }}-cdn-loli.zip - name: 打包v${{ steps.determine_version.outputs.version }}-cdn-loli.zip
run: zip -r v${{ steps.determine_version.outputs.version }}-cdn-loli.zip dist 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版本 - name: 构建哪吒v0版本
env: env:
VITE_NEZHA_VERSION: 'v0' VITE_NEZHA_VERSION: 'v0'
@ -130,6 +142,16 @@ jobs:
asset_name: v${{ steps.determine_version.outputs.version }}-cdn-loli.zip asset_name: v${{ steps.determine_version.outputs.version }}-cdn-loli.zip
asset_content_type: application/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 - name: Upload v0-dist.zip
uses: actions/upload-release-asset@v1 uses: actions/upload-release-asset@v1
env: env:
@ -162,7 +184,7 @@ jobs:
echo -e "\n## 变更内容\n$(cat change.txt)" >> body.txt 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 gh release edit v${{ steps.determine_version.outputs.version }} --notes-file body.txt

View File

@ -6,6 +6,7 @@
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vite build",
"build:cdn": "cross-env VITE_SARASA_TERM_SC_USE_CDN=1 VITE_USE_CDN=1 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", "preview": "vite preview",
"lint": "eslint ." "lint": "eslint ."
}, },

View File

@ -1,5 +1,19 @@
import config from '@/config'; 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\\('(.*)'\\)`); const configReg = (type) => new RegExp(`${type} = JSON.parse\\('(.*)'\\)`);
// 格式化数据保证JSON.parse能够正常解析 // 格式化数据保证JSON.parse能够正常解析
const unescaped = (str) => { const unescaped = (str) => {
@ -9,7 +23,7 @@ const unescaped = (str) => {
str2 = str2.replace(/\\\\/g, '\\'); str2 = str2.replace(/\\\\/g, '\\');
return str2; 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)); let resMatch = res?.match?.(configReg(config.nazhua.nezhaV0ConfigType));
// 尝试兼容不同的nezha前台主题 // 尝试兼容不同的nezha前台主题
if (!resMatch) { if (!resMatch) {

View File

@ -7,52 +7,63 @@ import eslintPlugin from 'vite-plugin-eslint';
import svgLoader from 'vite-svg-loader'; import svgLoader from 'vite-svg-loader';
import packageJson from './package'; import packageJson from './package';
dotenv.config({ let proxy;
path: '.env.development.local', 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; process.env.VITE_APP_VERSION = process.env.VERSION || packageJson.version;
// https://vite.dev/config/ // https://vite.dev/config/
export default defineConfig({ export default defineConfig({
base: process.env.VITE_BASE_PATH || '/',
server: { server: {
host: '0.0.0.0', host: '0.0.0.0',
port: 3000, port: 3000,
hmr: { hmr: {
overlay: false, overlay: false,
}, },
proxy: { 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/, ''),
},
},
}, },
css: { css: {
preprocessorOptions: { preprocessorOptions: {