首页
博客
WEB插件
vue-cli3实现分环境打包,给不同的环境配置相对应的打包命令和变量配置
原创
前端
2019-03-18 14:59:38
浏览:2048
>在vue-cli3的项目中, npm run serve时会把process.env.NODE_ENV设置为‘development’; npm run build 时会把process.env.NODE_ENV设置为‘production’; 此时只要根据process.env.NODE_ENV设置不同请求url就可以很简单的区分出本地和线上环境;但是,头疼的是打包时线上环境可能分多种,比如测试环境和生产环境等等。下面我们就看下怎样完成多环境配置: ### 方法一: ##### 1、package.json添加 "alpha": "vue-cli-service build --mode alpha" ```javascript { ··· "scripts": { "serve": "vue-cli-service serve", //本地运行,会把process.env.NODE_ENV设置为‘development’ "alpha": "vue-cli-service build --mode alpha", // 打包,会把process.env.NODE_ENV设置为步骤2中‘.env.alpha’文件设置的值。 // 注意,这里 “--mode 名字“ 要和步骤2中文件名“.env.名字”名字保持一致 "build": "vue-cli-service build" //打包, 会把process.env.NODE_ENV设置为‘production’ }, "dependencies": { ··· }, ··· ``` ##### 2、在项目根目录添加文件“.env.alpha”,其内容: ```javascript NODE_ENV = 'alpha' ``` ##### 3、添加‘setbaseurl.js’用来设置url,其内容: ```javascript export function getbaseurl(){ let baseUrl = ""; //这里是一个默认的url,可以没有 switch (process.env.NODE_ENV) { case 'development': baseUrl = "http://localhost:8000" //这里是本地的请求url break case 'alpha': // 注意这里的名字要和步骤二中设置的环境名字对应起来 baseUrl = "http://www.alpha.com" //这里是测试环境中的url break case 'production': baseUrl = "https://www.pro.com" //生产环境url break } return baseUrl; }; ``` ##### 4、在请求中引入设定的url,我这里用的是axiso,所以在axios的配置文件中引入并使用 ```javascript import axios from 'axios' import getbaseurl from './setbaseurl' axios.defaults.withCredentials = true; axios.defaults.baseURL = getbaseurl(); ···· ``` ##### 5、这样,npm run alpha 即测试生产环境,npm run build则是正式生产环境 >通过改变process.env.NODE_ENV值区分打包环境,但是webpack打包时针对process.env.NODE_ENV===‘production’和其他情况打出来的包结构和大小都不一样;为了消除这种差异,可以使用其他变量比如process.env.VUE_APP_BASEURL来区分环境,下面我们来看下第二种方法,也是推荐这种方法: ### 方法二: ##### 1、package.json中打包命令: ```javascript { ··· "scripts": { "serve": "vue-cli-service serve", "alpha": "vue-cli-service build --mode alpha", "build": "vue-cli-service build --mode build" }, ··· } ``` ##### 2、在项目根目录添加文件“.env.alpha”和“.env.build”,其内容分别为: “.env.alpha”文件内容: ```javascript NODE_ENV = 'production' VUE_APP_BASEURL = 'http://www.alpha.com' ``` “.env.build”文件内容: ```javascript NODE_ENV = 'production' VUE_APP_BASEURL = 'https://www.pro.com' ``` ##### 3、区分环境: ```javascript import axios from 'axios' import getbaseurl from './setbaseurl' axios.defaults.withCredentials = true; axios.defaults.baseURL = process.env.VUE_APP_BASEURL;//重点在这里 ···· ``` >这样,npm run alpha 即测试生产环境,npm run build则是正式生产环境,比第一张方法方便多了。`注:当前环境可用 ' .env.*.local '或' .env.local '覆盖`
上一篇:
vue-cli3 引入 element-ui 按需加载的配置
下一篇:
Ant Design Vue 开发时 upload 自定义手动上传 Axios(ajax)时 new FormData() 出现 [object Object]
推荐热文
Ant Design Vue 开发时 upload 自定义手动上传 Axios(ajax)时 new FormData() 出现 [object Object]
vue-cli 3.0 安装和创建项目教程
React create-react-app 安装和创建项目教程
Angular CLI 安装和创建项目教程
设置用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm
vue部署到Nginx服务器上
vue-cli3 引入 element-ui 按需加载的配置