在实际项目中,在开发过程会根据开发、测试、生产环境的不同来采用不用的配置,最常用的便是 api 接口调用的不同。因此,我们需要根据不同的环境设置不同的 api 地址。所以我们需要对 webpack 的不同配置来完成这个需求。
项目中,我使用的是 vue-cli 来初始化构建项目的。文件夹目录中会有 build 和 config 两个文件夹。
修改配置文件
./config/index.js
在此配置文件中添加需要增加的环境配置
1  | build: {  | 
webpack.prod.conf.js
1  | const env = config.build[process.env.ENV_CONFIG+'Env']  | 
package.json
1  | "scripts": {  | 
这里有几点需要注意:
- cross-env 是为了兼容各个系统之间差别,需要安装这个包
 
1  | npm install cross-env --save-dev  | 
- NODE_ENV 和 ENV_CONFIG 与环境配置文件中的大小写一定要一致,不然在 linux 系统服务器下面会出现问题,已踩坑。
 
添加相应的环境文件
sit.env.js 等
1  | module.exports = {  | 
如果需要配置的环境比较多,就按照这个来进行改写添加相应的环境配置文件。
启动项目
1  | #开发调试  | 
小结
在开发中,使用的是 node 的环境下。所以我们写的环境的配置文件中的字段都是可以取到值得比如:
1  | process.env.BASE_URL  | 
当我们能取到这些值得时候,我们就可以在不同环境的打包的时候,把不同环境下的 api 的前缀在打包的时候进行更换。用命令来构建 webpack 的打包就比较方便了。可以在我们的 api 请求拦截器的时候进行拦截比如我使用的是 axios,配置是这样的:
1  | axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? '/buy-api/' : process.env.BASE_URL;  |