vite文件配置
let projectName = process.env.COMPANY_NAME;
const transformIndexHtml = (code: any) => {
//main.ts入口文件由启动命令行带的COMPANY_NAME决定
return code.replace(/__INDEX__/, `/src/${projectName}.ts`);
};
export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
const env = loadEnv(mode, process.cwd());
const viteEnv = wrapperEnv(env);
return {
// base: "/",
// alias config
root: __dirname,
resolve: {
alias: {
"@": resolve(__dirname, "./src"),
"vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
}
},
// global css
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/var.scss";`
}
}
},
// plugins
plugins: [
{
name: "demo-transform",
enforce: "pre",
// vite build is production will not invoke `transformIndexHtml`
transform(code, id) {
if (id.endsWith(".html")) {
return { code: transformIndexHtml(code), map: null };
}
},
transformIndexHtml
}
],
define: {
"process.env.NODE_ENV": `'${process.env.NODE_ENV}'`
},
optimizeDeps: {
exclude: ["__INDEX__"] // 排除 __INDEX__
},
// build configure
};
});
index.html文件 需要改动的地方
<script type="module" src="__INDEX__"></script>
命令行配置
通过COMPANY_NAME决定启动哪一个服务 比如npm run dev:cq
package.json文件配置 记得安装cross-env插件
"dev": "vite",
"dev:hn": "cross-env COMPANY_NAME=h5 vite",
"serve": "vite",