1.dev.env.js
'use strict' const merge = require('webpack-merge') const prodEnv = require('./prod.env') module.exports = merge(prodEnv, { BASE_API: '"http://localhost:8080/api"', NODE_ENV: '"development"' })
2.index.js
module.exports = { dev: {
//解决跨域问题 proxyTable: { "/api": { target: '后端接口前缀地址', changeOrigin: true, pathRewrite: { //需要rewrite重写的, 如果在服务器端做了处理则可以不要这段否则必须加上这段。不然会出现请求超时等问题。 '^/api': '' } } }, } }
3.prod.env.js (多套开发环境设置)
'use strict' module.exports = { NODE_ENV: '"production"', BASE_API_DEV: '"http://a.com"',//开发环境 BASE_API_TEST: '"http://b.com"',//测试环境 BASE_API_PROD: '"http://c.com"',//生产环境 }
4.在requset.js 设置axios默认地址
import axios from 'axios' if(location.hostname == 'localhost'){ //开发环境 axios.defaults.baseURI = process.env.BASE_API_DEV }else if(location.hostname == 'www.baidu.com'){ //测试环境 axios.defaults.baseURI = process.env.BASE_API_TEST }else if(location.hostname == 'www.baidu2.com'){ //生产环境 axios.defaults.baseURI = process.env.BASE_API_PROD } 。。。。。。 const service = axios.create({ // 请求延时时间 timeout: settimeout // 拓展:自定义请求头内容/请求数据类型等 })
以上设置完毕,每次执行 npm run build命令都会根据 当前不同的环境而选用不同的域名地址。这样就可以达到只打包一次就能在不同的环境中运行了。