Files
Docker/WebVue/vite.config.ts
T
2026-09-09 16:55:38 +08:00

66 lines
1.6 KiB
TypeScript

import { resolve } from "node:path";
import { loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import topLevelAwait from "vite-plugin-top-level-await";
import dayjs from "dayjs";
import pkg from "./package.json";
import type { UserConfig, ConfigEnv } from "vite";
const CWD = process.cwd();
const __APP_INFO__ = {
pkg,
lastBuildTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
};
// https://vitejs.dev/config/
export default ({ command, mode }: ConfigEnv): UserConfig => {
// 环境变量
const { VITE_BASE_URL, VITE_DROP_CONSOLE } = loadEnv(mode, CWD);
const isBuild = command === "build";
return {
base: VITE_BASE_URL,
define: {
__APP_INFO__: JSON.stringify(__APP_INFO__),
},
resolve: {
alias: [
{
find: "@",
replacement: resolve(__dirname, "./src"),
},
],
},
plugins: [
vue(),
vueJsx(),
topLevelAwait({
// The export name of top-level await promise for each chunk module
promiseExportName: "__tla",
// The function to generate import names of top-level await promise in each chunk module
promiseImportName: (i) => `__tla_${i}`,
}),
],
server: {
host: "0.0.0.0",
port: 8088,
},
// ========== 新增打包资源哈希配置 ==========
build: {
rollupOptions: {
output: {
// Rollup 使用 [hash],不是 contenthash
entryFileNames: `assets/[name]-[hash].js`,
chunkFileNames: `assets/[name]-[hash].js`,
assetFileNames: `assets/[name]-[hash].[ext]`,
},
},
},
};
};