You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.9 KiB
75 lines
1.9 KiB
import { defineConfig, loadEnv } from 'vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import path from 'path'
|
|
|
|
// https://vite.dev/config/
|
|
export default defineConfig(({ mode }) => {
|
|
// 加载对应模式的环境变量
|
|
const env = loadEnv(mode, process.cwd());
|
|
|
|
let config = {
|
|
plugins: [vue()],
|
|
resolve: {
|
|
// 配置别名
|
|
alias: {
|
|
'@': path.resolve(__dirname, 'src'),
|
|
},
|
|
},
|
|
css: {
|
|
preprocessorOptions: {
|
|
// 配置全局样式
|
|
scss: {
|
|
additionalData: `@import "@/styles/variables.scss";`,
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
if (mode === 'development') {
|
|
// 开发模式下的配置
|
|
config = {
|
|
...config,
|
|
server: {
|
|
host: env.VITE_DEV_HOST || '0.0.0.0', // 允许通过网络访问,从环境变量获取host
|
|
port: parseInt(env.VITE_DEV_PORT, 10) || 8080, // 自定义端口,从环境变量获取port
|
|
open: true, // 自动打开浏览器
|
|
// 配置代理
|
|
proxy: {
|
|
'/api': {
|
|
target: env.VITE_DEV_API_URL,
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api/, ''),
|
|
},
|
|
},
|
|
},
|
|
};
|
|
} else if (mode === 'production') {
|
|
// 生产模式下的配置
|
|
config = {
|
|
...config,
|
|
build: {
|
|
terserOptions: {
|
|
compress: {
|
|
drop_console: env.VITE_BUILD_DROP_CONSOLE === 'true', // 移除 console 语句,从环境变量获取是否移除console
|
|
},
|
|
},
|
|
// 配置打包输出目录
|
|
outDir: 'dist',
|
|
// 配置资源文件名格式
|
|
assetsDir: 'assets',
|
|
rollupOptions: {
|
|
output: {
|
|
// 手动分割代码
|
|
manualChunks(id) {
|
|
if (id.includes('node_modules')) {
|
|
return id.toString().split('node_modules/')[1].split('/')[0].toString();
|
|
}
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
}
|
|
|
|
return config;
|
|
})
|