2021-12-07 16:36:16 +08:00
|
|
|
import { resolve } from 'path'
|
|
|
|
import { loadEnv } from 'vite'
|
|
|
|
import type { UserConfig, ConfigEnv } from 'vite'
|
|
|
|
import Vue from '@vitejs/plugin-vue'
|
|
|
|
import WindiCSS from 'vite-plugin-windicss'
|
2021-12-11 11:46:10 +08:00
|
|
|
// import Components from 'unplugin-vue-components/vite'
|
|
|
|
// import AutoImport from 'unplugin-auto-import/vite'
|
2021-12-07 16:36:16 +08:00
|
|
|
import VueJsx from '@vitejs/plugin-vue-jsx'
|
|
|
|
import EslintPlugin from 'vite-plugin-eslint'
|
2021-12-11 11:46:10 +08:00
|
|
|
// import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
|
2021-12-08 10:47:33 +08:00
|
|
|
import VueI18n from '@intlify/vite-plugin-vue-i18n'
|
2021-12-10 17:10:51 +08:00
|
|
|
import Icons from 'unplugin-icons/vite'
|
2021-12-11 11:46:10 +08:00
|
|
|
import StyleImport, { ElementPlusResolve } from 'vite-plugin-style-import'
|
2021-10-10 09:59:52 +08:00
|
|
|
|
|
|
|
// https://vitejs.dev/config/
|
2021-12-07 16:36:16 +08:00
|
|
|
const root = process.cwd()
|
|
|
|
|
|
|
|
function pathResolve(dir: string) {
|
|
|
|
return resolve(root, '.', dir)
|
|
|
|
}
|
|
|
|
|
|
|
|
// https://vitejs.dev/config/
|
|
|
|
export default ({ command, mode }: ConfigEnv): UserConfig => {
|
|
|
|
let env = null
|
|
|
|
if (command === 'serve') {
|
|
|
|
env = loadEnv(process.argv[4], root)
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
env = loadEnv(mode, root)
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
base: env.VITE_BASE_PATH,
|
|
|
|
plugins: [
|
|
|
|
Vue(),
|
|
|
|
VueJsx(),
|
|
|
|
WindiCSS(),
|
2021-12-11 11:46:10 +08:00
|
|
|
StyleImport({
|
|
|
|
resolves: [ElementPlusResolve()]
|
2021-12-07 16:36:16 +08:00
|
|
|
}),
|
2021-12-11 11:46:10 +08:00
|
|
|
// AutoImport({
|
|
|
|
// imports: [
|
|
|
|
// 'vue',
|
|
|
|
// 'vue-router',
|
|
|
|
// 'vue-i18n',
|
|
|
|
// '@vueuse/core'
|
|
|
|
// ],
|
|
|
|
// dts: 'src/types/auto-imports.d.ts'
|
|
|
|
// }),
|
2021-12-10 17:10:51 +08:00
|
|
|
Icons({
|
|
|
|
compiler: 'vue3',
|
|
|
|
autoInstall: true
|
|
|
|
}),
|
2021-12-11 11:46:10 +08:00
|
|
|
// Components({
|
|
|
|
// dirs: ['src/components'],
|
|
|
|
// extensions: ['vue', 'md'],
|
|
|
|
// include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
|
|
|
|
// // custom resolvers
|
|
|
|
// resolvers: [
|
|
|
|
// ElementPlusResolver(),
|
|
|
|
// IconsResolver({
|
|
|
|
// prefix: false,
|
|
|
|
// enabledCollections : ['ep']
|
|
|
|
// })
|
|
|
|
// ],
|
|
|
|
// dts: 'src/types/components.d.ts'
|
|
|
|
// }),
|
2021-12-07 16:36:16 +08:00
|
|
|
EslintPlugin({
|
2021-12-11 11:46:10 +08:00
|
|
|
cache: false,
|
2021-12-07 16:36:16 +08:00
|
|
|
include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'] // 检查的文件
|
2021-12-08 10:47:33 +08:00
|
|
|
}),
|
|
|
|
VueI18n({
|
|
|
|
runtimeOnly: true,
|
|
|
|
compositionOnly: true,
|
2021-12-11 11:46:10 +08:00
|
|
|
include: [resolve(__dirname, 'src/locales/**')]
|
2021-12-07 16:36:16 +08:00
|
|
|
})
|
|
|
|
],
|
|
|
|
|
|
|
|
css: {
|
|
|
|
preprocessorOptions: {
|
|
|
|
less: {
|
2021-12-10 17:10:51 +08:00
|
|
|
additionalData: '@import "./src/styles/variables.less";',
|
2021-12-07 16:36:16 +08:00
|
|
|
javascriptEnabled: true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
resolve: {
|
|
|
|
alias: [
|
|
|
|
{
|
|
|
|
find: /\@\//,
|
|
|
|
replacement: `${pathResolve('src')}/`
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
build: {
|
|
|
|
minify: 'terser',
|
|
|
|
outDir: env.VITE_OUT_DIR,
|
|
|
|
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'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
server: {
|
|
|
|
proxy: {
|
|
|
|
// 字符串简写写法
|
|
|
|
'/foo': 'http://localhost:4567/foo',
|
|
|
|
// 选项写法
|
|
|
|
'/api': {
|
|
|
|
target: 'http://jsonplaceholder.typicode.com',
|
|
|
|
changeOrigin: true,
|
|
|
|
rewrite: path => path.replace(/^\/api/, '')
|
|
|
|
},
|
|
|
|
// 正则表达式写法
|
|
|
|
'^/fallback/.*': {
|
|
|
|
target: 'http://jsonplaceholder.typicode.com',
|
|
|
|
changeOrigin: true,
|
|
|
|
rewrite: path => path.replace(/^\/fallback/, '')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
optimizeDeps: {
|
|
|
|
include: [
|
|
|
|
'vue',
|
2021-12-10 17:10:51 +08:00
|
|
|
'vue-router',
|
2021-12-11 11:46:10 +08:00
|
|
|
'vue-types'
|
2021-12-07 16:36:16 +08:00
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|