在实际项目中,在开发过程会根据开发、测试、生产环境的不同来采用不用的配置,最常用的便是 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; |