52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
|
|
import { fileURLToPath, URL } from 'node:url'
|
|||
|
|
|
|||
|
|
import { defineConfig } from 'vite'
|
|||
|
|
import vue from '@vitejs/plugin-vue'
|
|||
|
|
|
|||
|
|
// https://vite.dev/config/
|
|||
|
|
export default defineConfig({
|
|||
|
|
plugins: [
|
|||
|
|
vue(),
|
|||
|
|
],
|
|||
|
|
resolve: {
|
|||
|
|
alias: {
|
|||
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
server: {
|
|||
|
|
host: '0.0.0.0', // 允许局域网访问
|
|||
|
|
port: 5173
|
|||
|
|
},
|
|||
|
|
build: {
|
|||
|
|
minify: 'terser',
|
|||
|
|
terserOptions: {
|
|||
|
|
compress: {
|
|||
|
|
drop_console: true,
|
|||
|
|
drop_debugger: true
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// 生成带hash的文件名,避免浏览器缓存
|
|||
|
|
rollupOptions: {
|
|||
|
|
output: {
|
|||
|
|
// 入口文件名
|
|||
|
|
entryFileNames: 'assets/js/[name].[hash].js',
|
|||
|
|
// 代码分割文件名
|
|||
|
|
chunkFileNames: 'assets/js/[name].[hash].js',
|
|||
|
|
// 资源文件名
|
|||
|
|
assetFileNames: (assetInfo) => {
|
|||
|
|
// 根据文件类型分目录存放
|
|||
|
|
if (assetInfo.name.endsWith('.css')) {
|
|||
|
|
return 'assets/css/[name].[hash].[ext]'
|
|||
|
|
}
|
|||
|
|
if (/\.(png|jpe?g|gif|svg|webp|ico)$/.test(assetInfo.name)) {
|
|||
|
|
return 'assets/images/[name].[hash].[ext]'
|
|||
|
|
}
|
|||
|
|
if (/\.(woff2?|eot|ttf|otf)$/.test(assetInfo.name)) {
|
|||
|
|
return 'assets/fonts/[name].[hash].[ext]'
|
|||
|
|
}
|
|||
|
|
return 'assets/[name].[hash].[ext]'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|