chore: try to use vite-plugin-dynamic-base

This commit is contained in:
Noah Hsu
2022-08-20 14:15:07 +08:00
parent c828360ef0
commit 663398ebab
7 changed files with 102 additions and 7 deletions

View File

@@ -1 +1 @@
VITE_SERVER_URL = "http://localhost:5244/" VITE_API_URL = "http://localhost:5244/"

View File

@@ -1 +1 @@
VITE_SERVER_URL = "/" VITE_API_URL = "/"

View File

@@ -11,16 +11,17 @@
href="https://jsd.nn.ci/gh/alist-org/logo@main/logo.svg" href="https://jsd.nn.ci/gh/alist-org/logo@main/logo.svg"
/> />
<title>Loading...</title> <title>Loading...</title>
</head>
<body>
<script> <script>
window.ALIST = { window.ALIST = {
cdn: "/CDN_URL", cdn: undefined,
monaco_cdn: undefined, monaco_cdn: undefined,
base_path: undefined, base_path: undefined,
api: undefined, api: undefined,
}; };
window.__dynamic_base__ = window.ALIST.cdn || "";
</script> </script>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div> <div id="root"></div>

View File

@@ -18,6 +18,7 @@
"terser": "^5.14.2", "terser": "^5.14.2",
"typescript": "^4.7.4", "typescript": "^4.7.4",
"vite": "^3.0.8", "vite": "^3.0.8",
"vite-plugin-dynamic-base": "^0.4.4",
"vite-plugin-solid": "^2.3.0" "vite-plugin-solid": "^2.3.0"
}, },
"dependencies": { "dependencies": {

76
pnpm-lock.yaml generated
View File

@@ -25,6 +25,7 @@ specifiers:
terser: ^5.14.2 terser: ^5.14.2
typescript: ^4.7.4 typescript: ^4.7.4
vite: ^3.0.8 vite: ^3.0.8
vite-plugin-dynamic-base: ^0.4.4
vite-plugin-solid: ^2.3.0 vite-plugin-solid: ^2.3.0
dependencies: dependencies:
@@ -54,6 +55,7 @@ devDependencies:
terser: 5.14.2 terser: 5.14.2
typescript: 4.7.4 typescript: 4.7.4
vite: 3.0.8_terser@5.14.2 vite: 3.0.8_terser@5.14.2
vite-plugin-dynamic-base: 0.4.4
vite-plugin-solid: 2.3.0_solid-js@1.4.8+vite@3.0.8 vite-plugin-solid: 2.3.0_solid-js@1.4.8+vite@3.0.8
packages: packages:
@@ -665,6 +667,10 @@ packages:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true dev: true
/boolbase/1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
dev: true
/brace-expansion/1.1.11: /brace-expansion/1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies: dependencies:
@@ -767,6 +773,21 @@ packages:
requiresBuild: true requiresBuild: true
dev: true dev: true
/css-select/4.3.0:
resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
dependencies:
boolbase: 1.0.0
css-what: 6.1.0
domhandler: 4.3.1
domutils: 2.8.0
nth-check: 2.1.1
dev: true
/css-what/6.1.0:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
dev: true
/csstype/3.0.11: /csstype/3.0.11:
resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==}
dev: false dev: false
@@ -803,10 +824,41 @@ packages:
engines: {node: '>=0.3.1'} engines: {node: '>=0.3.1'}
dev: false dev: false
/dom-serializer/1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
dependencies:
domelementtype: 2.3.0
domhandler: 4.3.1
entities: 2.2.0
dev: true
/domelementtype/2.3.0:
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
dev: true
/domhandler/4.3.1:
resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
engines: {node: '>= 4'}
dependencies:
domelementtype: 2.3.0
dev: true
/domutils/2.8.0:
resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
dependencies:
dom-serializer: 1.4.1
domelementtype: 2.3.0
domhandler: 4.3.1
dev: true
/electron-to-chromium/1.4.221: /electron-to-chromium/1.4.221:
resolution: {integrity: sha512-aWg2mYhpxZ6Q6Xvyk7B2ziBca4YqrCDlXzmcD7wuRs65pVEVkMT1u2ifdjpAQais2O2o0rW964ZWWWYRlAL/kw==} resolution: {integrity: sha512-aWg2mYhpxZ6Q6Xvyk7B2ziBca4YqrCDlXzmcD7wuRs65pVEVkMT1u2ifdjpAQais2O2o0rW964ZWWWYRlAL/kw==}
dev: true dev: true
/entities/2.2.0:
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
dev: true
/esbuild-android-64/0.14.54: /esbuild-android-64/0.14.54:
resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
@@ -1215,6 +1267,11 @@ packages:
space-separated-tokens: 2.0.1 space-separated-tokens: 2.0.1
dev: false dev: false
/he/1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
dev: true
/hey-listen/1.0.8: /hey-listen/1.0.8:
resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
dev: false dev: false
@@ -1814,10 +1871,23 @@ packages:
whatwg-url: 5.0.0 whatwg-url: 5.0.0
dev: true dev: true
/node-html-parser/5.4.1:
resolution: {integrity: sha512-xy/O2wOEBJsIRLs4avwa1lVY7tIpXXOoHHUJLa0GvnoPPqMG1hgBVl1tNI3GHOwRktTVZy+Y6rjghk4B9/NLyg==}
dependencies:
css-select: 4.3.0
he: 1.2.0
dev: true
/node-releases/2.0.6: /node-releases/2.0.6:
resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==}
dev: true dev: true
/nth-check/2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
dependencies:
boolbase: 1.0.0
dev: true
/once/1.4.0: /once/1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies: dependencies:
@@ -2238,6 +2308,12 @@ packages:
vfile-message: 3.1.2 vfile-message: 3.1.2
dev: false dev: false
/vite-plugin-dynamic-base/0.4.4:
resolution: {integrity: sha512-++d35lUSWhIRcoKfTUlWSe3BFMTJPB0iQzAhNCNwiFILfouXAosGhB0DNjtxiIuHSORSrxwawzlwByAGbDuJgA==}
dependencies:
node-html-parser: 5.4.1
dev: true
/vite-plugin-solid/2.3.0_solid-js@1.4.8+vite@3.0.8: /vite-plugin-solid/2.3.0_solid-js@1.4.8+vite@3.0.8:
resolution: {integrity: sha512-N2sa54C3UZC2nN5vpj5o6YP+XdIAZW6n6xv8OasxNAcAJPFeZT7EOVvumL0V4c8hBz1yuYniMWdESY8807fVSg==} resolution: {integrity: sha512-N2sa54C3UZC2nN5vpj5o6YP+XdIAZW6n6xv8OasxNAcAJPFeZT7EOVvumL0V4c8hBz1yuYniMWdESY8807fVSg==}
peerDependencies: peerDependencies:

View File

@@ -14,7 +14,7 @@ if (window.ALIST.base_path) {
setBasePath(window.ALIST.base_path); setBasePath(window.ALIST.base_path);
} }
export let api = import.meta.env.VITE_SERVER_URL as string; export let api = import.meta.env.VITE_API_URL as string;
if (window.ALIST.api) { if (window.ALIST.api) {
api = window.ALIST.api; api = window.ALIST.api;
} }

View File

@@ -2,6 +2,7 @@ import path from "path";
import { defineConfig } from "vite"; import { defineConfig } from "vite";
import solidPlugin from "vite-plugin-solid"; import solidPlugin from "vite-plugin-solid";
import legacy from "@vitejs/plugin-legacy"; import legacy from "@vitejs/plugin-legacy";
import { dynamicBase } from "vite-plugin-dynamic-base";
export default defineConfig({ export default defineConfig({
resolve: { resolve: {
@@ -15,9 +16,25 @@ export default defineConfig({
legacy({ legacy({
targets: ["defaults"], targets: ["defaults"],
}), }),
dynamicBase({
// dynamic public path var string, default window.__dynamic_base__
publicPath: " window.__dynamic_base__",
// dynamic load resources on index.html, default false. maybe change default true
transformIndexHtml: true,
}),
], ],
base: process.env.NODE_ENV === "production" ? "/__dynamic_base__/" : "/",
// base: "/",
build: { build: {
target: "esnext", target: "es2015", //next
// polyfillDynamicImport: false, // polyfillDynamicImport: false,
}, },
// experimental: {
// renderBuiltUrl: (filename, { type, hostId, hostType }) => {
// if (type === "asset") {
// return { runtime: `window.ALIST.cdn/${filename}` };
// }
// return { relative: true };
// },
// },
}); });