mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2026-04-23 05:44:30 +08:00
fix: optimize env config and support dynamic proxy target
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
NODE_ENV=development
|
NODE_ENV=development
|
||||||
VITE_APP_TITLE='SmartAdmin 开发环境(Dev)'
|
VITE_APP_TITLE='SmartAdmin 开发环境(Dev)'
|
||||||
VITE_APP_API_URL='http://127.0.0.1:1024'
|
VITE_APP_API_URL='/api'
|
||||||
|
VITE_PROXY_TARGET='http://127.0.0.1:1024'
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
NODE_ENV=development
|
NODE_ENV=development
|
||||||
VITE_APP_TITLE='SmartAdmin 本地环境(Local)'
|
VITE_APP_TITLE='SmartAdmin 本地环境(Local)'
|
||||||
VITE_APP_API_URL='http://127.0.0.1:1024'
|
VITE_APP_API_URL='/api'
|
||||||
|
VITE_PROXY_TARGET='http://127.0.0.1:1024'
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
VITE_APP_TITLE='SmartAdmin 预发布环境(Pre)'
|
VITE_APP_TITLE='SmartAdmin 预发布环境(Pre)'
|
||||||
VITE_APP_API_URL='https://preview.smartadmin.vip/smart-admin-api'
|
VITE_APP_API_URL='/smart-admin-api'
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
VITE_APP_TITLE='SmartAdmin V3.X'
|
VITE_APP_TITLE='SmartAdmin V3.X'
|
||||||
VITE_APP_API_URL='https://preview.smartadmin.vip/smart-admin-api'
|
VITE_APP_API_URL='/smart-admin-api'
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
VITE_APP_TITLE='SmartAdmin 测试环境(Test)'
|
VITE_APP_TITLE='SmartAdmin 测试环境(Test)'
|
||||||
VITE_APP_API_URL='http://127.0.0.1:1024'
|
VITE_APP_API_URL='/smart-admin-api'
|
||||||
|
|||||||
@@ -9,91 +9,93 @@
|
|||||||
*/
|
*/
|
||||||
import { resolve } from 'path';
|
import { resolve } from 'path';
|
||||||
import vue from '@vitejs/plugin-vue';
|
import vue from '@vitejs/plugin-vue';
|
||||||
|
import { loadEnv } from 'vite';
|
||||||
import customVariables from '/@/theme/custom-variables.js';
|
import customVariables from '/@/theme/custom-variables.js';
|
||||||
|
|
||||||
const pathResolve = (dir) => {
|
const pathResolve = (dir) => {
|
||||||
return resolve(__dirname, '.', dir);
|
return resolve(__dirname, '.', dir);
|
||||||
};
|
};
|
||||||
export default {
|
export default ({ mode }) => {
|
||||||
base: process.env.NODE_ENV === 'production' ? '/' : '/',
|
const env = loadEnv(mode, process.cwd());
|
||||||
root: process.cwd(),
|
return {
|
||||||
resolve: {
|
base: process.env.NODE_ENV === 'production' ? '/' : '/',
|
||||||
alias: [
|
root: process.cwd(),
|
||||||
// 国际化替换
|
resolve: {
|
||||||
{
|
alias: [
|
||||||
find: 'vue-i18n',
|
// 国际化替换
|
||||||
replacement: 'vue-i18n/dist/vue-i18n.cjs.js',
|
{
|
||||||
},
|
find: 'vue-i18n',
|
||||||
// 绝对路径重命名:/@/xxxx => src/xxxx
|
replacement: 'vue-i18n/dist/vue-i18n.cjs.js',
|
||||||
{
|
},
|
||||||
find: /\/@\//,
|
// 绝对路径重命名:/@/xxxx => src/xxxx
|
||||||
replacement: pathResolve('src') + '/',
|
{
|
||||||
},
|
find: /\/@\//,
|
||||||
{
|
replacement: pathResolve('src') + '/',
|
||||||
find: /^~/,
|
},
|
||||||
replacement: '',
|
{
|
||||||
},
|
find: /^~/,
|
||||||
],
|
replacement: '',
|
||||||
},
|
},
|
||||||
server: {
|
],
|
||||||
host: '0.0.0.0',
|
},
|
||||||
port: 8081,
|
|
||||||
server: {
|
server: {
|
||||||
|
host: '0.0.0.0',
|
||||||
|
port: 8081,
|
||||||
proxy: {
|
proxy: {
|
||||||
// 代理路径
|
// 代理路径
|
||||||
'/': {
|
'/api': {
|
||||||
target: 'http://127.0.0.1:1024/', // 目标服务器地址
|
target: env.VITE_PROXY_TARGET, // 目标服务器地址
|
||||||
changeOrigin: true, // 是否修改请求头中的 Origin 字段
|
changeOrigin: true, // 是否修改请求头中的 Origin 字段
|
||||||
rewrite: (path) => path, // 重写路径
|
rewrite: (path) => path.replace(/^\/api/, ''), // 重写路径
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
plugins: [vue()],
|
|
||||||
optimizeDeps: {
|
|
||||||
include: ['ant-design-vue/es/locale/zh_CN', 'dayjs/locale/zh-cn', 'ant-design-vue/es/locale/en_US'],
|
|
||||||
exclude: ['vue-demi'],
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
// 清除console和debugger
|
|
||||||
terserOptions: {
|
|
||||||
compress: {
|
|
||||||
drop_console: true,
|
|
||||||
drop_debugger: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
rollupOptions: {
|
|
||||||
output: {
|
|
||||||
//配置这个是让不同类型文件放在不同文件夹,不会显得太乱
|
|
||||||
chunkFileNames: 'js/[name]-[hash].js',
|
|
||||||
entryFileNames: 'js/[name]-[hash].js',
|
|
||||||
assetFileNames: '[ext]/[name]-[hash].[ext]',
|
|
||||||
manualChunks(id) {
|
|
||||||
//静态资源分拆打包
|
|
||||||
if (id.includes('node_modules')) {
|
|
||||||
return id.toString().split('node_modules/')[1].split('/')[0].toString();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
target: 'esnext',
|
plugins: [vue()],
|
||||||
outDir: 'dist', // 指定输出路径
|
optimizeDeps: {
|
||||||
assetsDir: 'assets', // 指定生成静态文件目录
|
include: ['ant-design-vue/es/locale/zh_CN', 'dayjs/locale/zh-cn', 'ant-design-vue/es/locale/en_US'],
|
||||||
assetsInlineLimit: '4096', // 小于此阈值的导入或引用资源将内联为 base64 编码
|
exclude: ['vue-demi'],
|
||||||
chunkSizeWarningLimit: 500, // chunk 大小警告的限制
|
},
|
||||||
minify: 'terser', // 混淆器,terser构建后文件体积更小
|
build: {
|
||||||
emptyOutDir: true, //打包前先清空原有打包文件
|
// 清除console和debugger
|
||||||
},
|
terserOptions: {
|
||||||
css: {
|
compress: {
|
||||||
preprocessorOptions: {
|
drop_console: true,
|
||||||
less: {
|
drop_debugger: true,
|
||||||
modifyVars: customVariables,
|
},
|
||||||
javascriptEnabled: true,
|
},
|
||||||
|
rollupOptions: {
|
||||||
|
output: {
|
||||||
|
//配置这个是让不同类型文件放在不同文件夹,不会显得太乱
|
||||||
|
chunkFileNames: 'js/[name]-[hash].js',
|
||||||
|
entryFileNames: 'js/[name]-[hash].js',
|
||||||
|
assetFileNames: '[ext]/[name]-[hash].[ext]',
|
||||||
|
manualChunks(id) {
|
||||||
|
//静态资源分拆打包
|
||||||
|
if (id.includes('node_modules')) {
|
||||||
|
return id.toString().split('node_modules/')[1].split('/')[0].toString();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
target: 'esnext',
|
||||||
|
outDir: 'dist', // 指定输出路径
|
||||||
|
assetsDir: 'assets', // 指定生成静态文件目录
|
||||||
|
assetsInlineLimit: '4096', // 小于此阈值的导入或引用资源将内联为 base64 编码
|
||||||
|
chunkSizeWarningLimit: 500, // chunk 大小警告的限制
|
||||||
|
minify: 'terser', // 混淆器,terser构建后文件体积更小
|
||||||
|
emptyOutDir: true, //打包前先清空原有打包文件
|
||||||
|
},
|
||||||
|
css: {
|
||||||
|
preprocessorOptions: {
|
||||||
|
less: {
|
||||||
|
modifyVars: customVariables,
|
||||||
|
javascriptEnabled: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
define: {
|
||||||
define: {
|
__INTLIFY_PROD_DEVTOOLS__: false,
|
||||||
__INTLIFY_PROD_DEVTOOLS__: false,
|
'process.env': process.env,
|
||||||
'process.env': process.env,
|
},
|
||||||
},
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user