本例教程基于
vue-cli 2.0
建立的项目。
适合当前项目有多个不一样api基地址的状况。
对于最新的vue-cli 3.0
是不适用的,vue-cli 3.0
实现方式将更加简单,更容易理解。javascript
cross-env
cnpm install --save-dev cross-env
复制代码
这里分别添加env_config=prod,env_config=dev来控制当前的压包环境vue
package.jsonjava
"scripts": {
- "build": "node build/build.js",
+ "build:prod": "cross-env env_config=prod node build/build.js",
+ "build:dev": "cross-env env_config=dev node build/build.js"
}
复制代码
咱们在src
文件夹下面新建一个文件apiUrl.js
,用来专门配置接口地址的。node
src/apiUrl.jswebpack
const master = {
api1: 'http://pro1.com/',
api2: 'http://pro2.com/',
};
const dev = {
api1: 'http://prodev1.com/',
api2: 'http://prodev2.com/',
};
// 若是还有其余的,能够自定义添加,可是必定要记得导出去。
module.exports = { master, dev };
复制代码
// ...
+ const api = require('../src/apiUrl');
+ const env = require('../config/dev.env');
+ env.api = "'" + JSON.stringify(api.dev) + "'";
// ...
// ...
new webpack.DefinePlugin({
- 'process.env': require('../config/dev.env')
+ 'process.env': env
}),
// ...
复制代码
// ...
const env = process.env.NODE_ENV === 'testing'
? require('../config/test.env')
: require('../config/prod.env')
+ const api = require('../src/apiUrl');
+ if(process.env.env_config === 'prod') {
+ env.api = "'" + JSON.stringify(api.master) + "'";
+ } else if(process.env.env_config === 'dev') {
+ env.api = "'" + JSON.stringify(api.dev) + "'";
+ }
// ...
复制代码
src/api.jsweb
// ...
// api接口地址,后续全部接口地址均可以在api里面找到。
let api;
api = JSON.parse(process.env.api);
// ...
复制代码
npm run build:prod
复制代码
npm run build:dev
复制代码
npm run dev
复制代码