Files
account/resources/admin/vite.config.js
2026-01-18 09:52:48 +08:00

89 lines
2.0 KiB
JavaScript

import { defineConfig } from 'vite'
import path from 'path'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
base:'./',
plugins: [vue()],
resolve: {
alias: {
// 设置路径
'~': path.resolve(__dirname, './'),
// 设置别名
'@': path.resolve(__dirname, './src')
},
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
define: {
__VUE_I18N_FULL_INSTALL__: true,
__VUE_I18N_LEGACY_API__: true,
__INTLIFY_PROD_DEVTOOLS__: false
},
server: {
port: 8080,
host: true,
open: false,
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
// '/api': {
// target: 'https://www.fastmock.site/mock/5039c4361c39a7e3252c5b55971f1bd3/api',
// changeOrigin: true,
// rewrite: (p) => p.replace(/^\/api/, '')
// }
},
},
css: {
postcss: {
plugins: [
{
postcssPlugin: 'internal:charset-removal',
AtRule: {
charset: (atRule) => {
if (atRule.name === 'charset') {
atRule.remove();
}
}
}
}
],
},
},
build: {
emptyOutDir: true,
outDir: 'dist',
assetsDir: './static/admin',
minify: 'terser',
terserOptions: {
compress: {
drop_console: true,
drop_debugger: true
}
},
rollupOptions: {
input: {
index: path.resolve(__dirname, 'index.html'),
},
// 拆包
output: {
chunkFileNames: 'static/js/[name]-[hash].js',
entryFileNames: 'static/js/[name]-[hash].js',
assetFileNames(assetInfo){
const imgExts = ['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.bmp', '.ico', '.svg']
if(assetInfo.name.endsWith('.css')){
return 'static/style/[name]-[hash].css'
}else if(imgExts.some(ext => assetInfo.name.endsWith(ext))){
return 'static/images/[name]-[hash].[ext]'
}else{
return 'static/other/[name]-[hash].[ext]'
}
},
manualChunks(id) {
if (id.includes('node_modules')) {
return id.split('/node_modules/').pop()?.split('/')[0]
}
}
}
}
}
})