61 lines
2.0 KiB
TypeScript
61 lines
2.0 KiB
TypeScript
import { defineConfig, loadEnv } from "vite";
|
||
import uni from "@dcloudio/vite-plugin-uni";
|
||
import { UnifiedViteWeappTailwindcssPlugin } from "weapp-tailwindcss/vite";
|
||
import tailwindcss from "tailwindcss";
|
||
import nvwaVitePlugin from "@nvwa-app/vite-plugin";
|
||
|
||
const isH5 = process.env.UNI_PLATFORM === "h5";
|
||
const isApp = process.env.UNI_PLATFORM === "app";
|
||
const WeappTailwindcssDisabled = isH5 || isApp;
|
||
|
||
export default defineConfig(({ mode }) => {
|
||
const env = loadEnv(mode, process.cwd(), "");
|
||
console.log("env", env);
|
||
|
||
// 检查是否启用调试构建模式(通过环境变量控制)
|
||
const isDebugBuild = env.NVWA_BUILD_DEBUG === "true" || process.env.NVWA_BUILD_DEBUG === "true";
|
||
|
||
return {
|
||
define: {
|
||
"import.meta.env.NVWA_BASE_URL": JSON.stringify(env.NVWA_BASE_URL),
|
||
},
|
||
plugins: [
|
||
uni(),
|
||
nvwaVitePlugin(),
|
||
UnifiedViteWeappTailwindcssPlugin(
|
||
{
|
||
disabled: WeappTailwindcssDisabled,
|
||
rem2rpx: true,
|
||
},
|
||
),
|
||
],
|
||
css: {
|
||
postcss: {
|
||
plugins: [
|
||
require('tailwindcss'),
|
||
require('autoprefixer'),
|
||
],
|
||
},
|
||
},
|
||
build: {
|
||
// 调试模式下禁用压缩和混淆,保持代码可读性
|
||
minify: isDebugBuild ? false : "esbuild",
|
||
// 生成 source maps 以便调试
|
||
sourcemap: isDebugBuild ? true : false,
|
||
// 保持代码分割,不合并成单个大文件
|
||
rollupOptions: {
|
||
output: {
|
||
// 调试模式下保持文件名的可读性(不使用 hash,便于调试)
|
||
entryFileNames: isDebugBuild ? "assets/[name].js" : "assets/[name]-[hash].js",
|
||
chunkFileNames: isDebugBuild ? "assets/[name].js" : "assets/[name]-[hash].js",
|
||
assetFileNames: isDebugBuild ? "assets/[name].[ext]" : "assets/[name]-[hash].[ext]",
|
||
},
|
||
},
|
||
// 调试模式下不压缩 CSS
|
||
cssMinify: !isDebugBuild,
|
||
// 增加 chunk 大小警告阈值(调试模式下可能文件较大)
|
||
chunkSizeWarningLimit: isDebugBuild ? 2000 : 500,
|
||
},
|
||
};
|
||
});
|