102 lines
2.6 KiB
TypeScript
102 lines
2.6 KiB
TypeScript
import { defineConfig, loadEnv } from "vite";
|
|
import vue from "@vitejs/plugin-vue";
|
|
import Components from "unplugin-vue-components/vite";
|
|
import { VantResolver } from "unplugin-vue-components/resolvers";
|
|
import postcsspxtoviewport from "postcss-px-to-viewport";
|
|
import { createHtmlPlugin } from "vite-plugin-html";
|
|
import VueSetupExtend from "vite-plugin-vue-setup-extend";
|
|
import legacy from "@vitejs/plugin-legacy";
|
|
import proxyConfig from "./proxy.config";
|
|
import { appName, injectScriptStr } from "./config";
|
|
import path from "path";
|
|
|
|
type enforceType = "post" | "pre";
|
|
const enforceValue:enforceType = "post";
|
|
const setCrossoriginUseCredentials = () => {
|
|
return {
|
|
name: "set-crossorigin",
|
|
enforce: enforceValue,
|
|
transformIndexHtml(html) {
|
|
return html.replace(/crossorigin/g, "crossorigin=\"use-credentials\"");
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
// https://vitejs.dev/config/
|
|
export default (opt: any) => {
|
|
const { mode } = opt;
|
|
const env: any = loadEnv(mode, process.cwd());
|
|
|
|
return defineConfig({
|
|
base: "./",
|
|
envDir: "./env",
|
|
build: {
|
|
target: "es2015"
|
|
},
|
|
plugins: [
|
|
createHtmlPlugin({
|
|
inject: {
|
|
data: {
|
|
title: appName,
|
|
injectScript: injectScriptStr
|
|
}
|
|
}
|
|
}),
|
|
vue(),
|
|
VueSetupExtend(),
|
|
Components({
|
|
resolvers: [VantResolver()]
|
|
}),
|
|
legacy({
|
|
// targets: ['defaults', 'not IE 11'],
|
|
targets: ["chrome 52"],
|
|
additionalLegacyPolyfills: ["regenerator-runtime/runtime"],
|
|
renderLegacyChunks: true,
|
|
polyfills: [
|
|
"es.symbol",
|
|
"es.array.filter",
|
|
"es.promise",
|
|
"es.promise.finally",
|
|
"es/map",
|
|
"es/set",
|
|
"es.array.for-each",
|
|
"es.object.define-properties",
|
|
"es.object.define-property",
|
|
"es.object.get-own-property-descriptor",
|
|
"es.object.get-own-property-descriptors",
|
|
"es.object.keys",
|
|
"es.object.to-string",
|
|
"web.dom-collections.for-each",
|
|
"esnext.global-this",
|
|
"esnext.string.match-all"
|
|
]
|
|
}),
|
|
setCrossoriginUseCredentials()
|
|
],
|
|
css: {
|
|
preprocessorOptions: {
|
|
less: {
|
|
javascriptEnabled: true
|
|
}
|
|
},
|
|
postcss: {
|
|
plugins: [
|
|
postcsspxtoviewport({
|
|
viewportWidth: 375,
|
|
selectorBlackList: [""]
|
|
})
|
|
]
|
|
}
|
|
},
|
|
server: {
|
|
proxy: proxyConfig
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@": path.resolve(__dirname, "src")
|
|
}
|
|
}
|
|
});
|
|
|
|
}; |