在根目录下建立三个.env文件
.env
.env.devlopment
.env.production
// 可以的话添加一个测试环境的配置文件
.env.staging
.env
# 页面标题
VITE_APP_TITLE = 'ZRAdmin.NET后台管理'
.env.devlopment
# 开发环境配置
ENV = 'development'
VITE_APP_API_HOST = 'http://localhost:8888'
# 开发环境
VITE_APP_BASE_API = '/dev-api'
# 路由前缀
VITE_APP_ROUTER_PREFIX = '/'
# 默认上传地址
VITE_APP_UPLOAD_URL = '/Common/UploadFile'
#socket API
VITE_APP_SOCKET_API = '/msghub'
.env.production
# 生产环境配置
ENV = 'production'
# 生产环境
VITE_APP_BASE_API = '/prod-api'
# 路由前缀
VITE_APP_ROUTER_PREFIX = '/'
# 默认上传地址
VITE_APP_UPLOAD_URL = '/Common/UploadFile'
#socket API
VITE_APP_SOCKET_API = '/msghub'
vite.config.js
//注意 Vite 默认是不加载 .env 文件的,因为这些文件需要在执行完 Vite
///配置后才能确定加载哪一个,举个例子,root 和 envDir 选项会影响加载行为。
///不过当你的确需要时,你可以使用 Vite 导出的 loadEnv 函数来加载指定的
//.env 文件。
import { defineConfig, loadEnv } from 'vite'
export default defineConfig(({ command, mode }) => {
// 根据当前工作目录中的 `mode` 加载 .env 文件
// 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。
const env = loadEnv(mode, process.cwd(), '')
return {
// vite 配置
define: {
__APP_ENV__: env.APP_ENV
}
}
})
------------------------------------------------------------------
import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
console.log(mode)
const env = loadEnv(mode, process.cwd())
const alias = {
// 设置路径
'~': path.resolve(__dirname, './'),
// 设置别名
'@': path.resolve(__dirname, './src')
}
<!-- if (command === 'serve') {
// 解决警告You are running the esm-bundler build of vue-i18n.
alias['vue-i18n'] = 'vue-i18n/dist/vue-i18n.cjs.js'
} -->
return {
plugins: createVitePlugins(env, command === 'build'),
resolve: {
// https://cn.vitejs.dev/config/#resolve-alias
alias: alias,
// 导入时想要省略的扩展名列表
// https://cn.vitejs.dev/config/#resolve-extensions
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
css: {
devSourcemap: true //开发模式时启用
},
base: env.VITE_APP_ROUTER_PREFIX,
// 打包配置
build: {
sourcemap: command === 'build' ? false : 'inline',
outDir: 'dist', //指定输出目录
assetsDir: 'assets', //指定静态资源存储目录(相对于outDir)
// 将js、css文件分离到单独文件夹
rollupOptions: {
output: {
chunkFileNames: 'static/js/[name]-[hash].js',
entryFileNames: 'static/js/[name]-[hash].js',
assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
}
}
},
// vite 相关配置
server: {
port: 8887,
host: true,
open: true,
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api': {
target: env.VITE_APP_API_HOST,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/dev-api/, '')
},
'/msghub': {
target: env.VITE_APP_API_HOST,
ws: true,
rewrite: (path) => path.replace(/^\/msgHub/, '')
}
}
}
}
})
package.json文件
"scripts": {
"dev": "vite",
"pro": "vite --mode production",
"build:prod": "vite build",
"build:stage": "vite build --mode staging",
"preview": "vite preview"
}
在其他地方使用配置环境变量 request.js
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: import.meta.env.VITE_APP_BASE_API,
// 超时
timeout: 30000
})