我们在不同环境需要使用不同的配置,例如:线上环境上传文件地址 和测试环境的上传文件地址是不一样的,我们在打包的时候不想手动修改这些地址,使用不同的打包命令就可以生成不同环境的包,这个时候就需要使用到环境变量。
通常是.env开头的文件,默认可被vite和vue-cli读取的文件有如下两个:
在这里面定义的常量都是可以被读取的:vite和vue-cli有一点区别。
vite读取的常量必须VITE_APP开头的
vue-cli读取的常量必须VUE_APP开头的
import { loadEnv } from "vite";
export default ({ mode }) =>
defineConfig({
base: loadEnv(mode, process.cwd()).VITE_APP_BUILD_PATH,
build: {
outDir: loadEnv(mode, process.cwd()).VITE_APP_BUILD_NAME,
assetsDir: "static",
minify: "terser",
terserOptions: {
compress: {
//生产环境时移除console
drop_console: true,
drop_debugger: true,
},
},
} });
const url = import.meta.env.VITE_APP_BASE_API;
axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
// 创建axios实例
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 1200000,
});
请查看以下package.json文件中scripts片段
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build test": "vue-cli-service build --mode test",
},
现在我们就可以使用不同的npm命令切换环境了。
上面示例使用的 build 和 build test ,是模拟打包线上环境和测试环境。
例如线上环境的baseUrl为/api,测试环境为/proapi,就可以使用这个方式进行区分,只要使用不同npm命令即可。