Import the supplied management frontend, including request encryption, withdrawal updates, and vendored dependencies. Use incoming versions for overlapping source files and retain existing environment configuration absent from the supplied directory.
88 lines
3.2 KiB
TypeScript
88 lines
3.2 KiB
TypeScript
import { resolve } from 'path'
|
|
import type { ConfigEnv, UserConfig } from 'vite'
|
|
import { loadEnv } from 'vite'
|
|
import { createVitePlugins } from './build/vite'
|
|
import { exclude, include } from "./build/vite/optimize"
|
|
// 当前执行node命令时文件夹的地址(工作目录)
|
|
const root = process.cwd()
|
|
|
|
// 路径查找
|
|
function pathResolve(dir: string) {
|
|
return resolve(root, '.', dir)
|
|
}
|
|
|
|
// https://vitejs.dev/config/
|
|
export default ({ command, mode }: ConfigEnv): UserConfig => {
|
|
let env = {} as any
|
|
const isBuild = command === 'build'
|
|
if (!isBuild) {
|
|
env = loadEnv((process.argv[3] === '--mode' ? process.argv[4] : process.argv[3]), root)
|
|
} else {
|
|
env = loadEnv(mode, root)
|
|
}
|
|
return {
|
|
base: env.VITE_BASE_PATH,
|
|
root: root,
|
|
// 服务端渲染
|
|
server: {
|
|
port: env.VITE_PORT, // 端口号
|
|
host: "0.0.0.0",
|
|
open: env.VITE_OPEN === 'true',
|
|
// 本地跨域代理. 目前注释的原因:暂时没有用途,server 端已经支持跨域
|
|
// proxy: {
|
|
// ['/admin-api']: {
|
|
// target: env.VITE_BASE_URL,
|
|
// ws: false,
|
|
// changeOrigin: true,
|
|
// rewrite: (path) => path.replace(new RegExp(`^/admin-api`), ''),
|
|
// },
|
|
// },
|
|
},
|
|
// 项目使用的vite插件。 单独提取到build/vite/plugin中管理
|
|
plugins: createVitePlugins(isBuild),
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
additionalData: '@use "@/styles/variables.scss" as *;',
|
|
javascriptEnabled: true,
|
|
silenceDeprecations: ["legacy-js-api"], // 参考自 https://stackoverflow.com/questions/78997907/the-legacy-js-api-is-deprecated-and-will-be-removed-in-dart-sass-2-0-0
|
|
}
|
|
}
|
|
},
|
|
resolve: {
|
|
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.scss', '.css'],
|
|
alias: [
|
|
{
|
|
find: 'vue-i18n',
|
|
replacement: 'vue-i18n/dist/vue-i18n.cjs.js'
|
|
},
|
|
{
|
|
find: /\@\//,
|
|
replacement: `${pathResolve('src')}/`
|
|
}
|
|
]
|
|
},
|
|
build: {
|
|
target: 'es2022',
|
|
minify: 'terser',
|
|
outDir: env.VITE_OUT_DIR || 'dist',
|
|
sourcemap: env.VITE_SOURCEMAP === 'true' ? 'inline' : false,
|
|
// brotliSize: false,
|
|
terserOptions: {
|
|
compress: {
|
|
drop_debugger: env.VITE_DROP_DEBUGGER === 'true',
|
|
drop_console: env.VITE_DROP_CONSOLE === 'true'
|
|
}
|
|
},
|
|
rollupOptions: {
|
|
output: {
|
|
manualChunks: {
|
|
echarts: ['echarts'] // 将 echarts 单独打包,参考 https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues/IAB1SX 讨论
|
|
}
|
|
},
|
|
},
|
|
},
|
|
optimizeDeps: { include, exclude }
|
|
}
|
|
}
|