vue-cli3实现分环境打包步骤(给不同的环境配置相对应的打包命令)

摘要:
当npmrun serve时,process.env.NODE_ env设置为“development”;当npmrunbuild时,process.env.NODE_ env设置为“production”;此时,只有根据process.env.NODE_env才能通过设置不同的请求URL轻松区分本地和在线环境。也就是说,当npmrunbuild_ env时,如何手动更改process.env.NODE

在vue-cli3的项目中,

npm run serve时会把process.env.NODE_ENV设置为‘development’;

npm run build 时会把process.env.NODE_ENV设置为‘production’;

此时只要根据process.env.NODE_ENV设置不同请求url就可以很简单的区分出本地和线上环境。

头疼的是打包时线上环境可能分多种,比如测试环境和生产环境等等。

在vue-cli2中打包时可以修改 “build” 和 “config”中的文件来区分不同的线上环境

而vue-cli3号称0配置,无法直接修改打包文件,那么怎么区分不同的线上环境呢? 也就是说npm run build时怎么手动更改process.env.NODE_ENV?

注意

其实通过改变process.env.NODE_ENV值区分打包环境是有问题的,因为webpack打包时针对process.env.NODE_ENV===‘production’和其他情况打出来的包结构和大小都不一样;

为了消除这种差异,可以使用其他变量比如process.env.VUE_APP_TITLE来区分环境

具体步骤如下: 

1.  package.json中打包命令:

{
  ···
  "scripts": {
    "serve": "vue-cli-service serve",    //本地运行,会把process.env.NODE_ENV设置为‘development’
"alpha": "vue-cli-service build --mode alpha", // 注意,这里 “--mode 名字“ 要和步骤2中文件名“.env.名字”名字保持一致
"build": "vue-cli-service build --mode build" }, "dependencies": { ··· }, ··· }

  

2. 在项目根目录添加文件“.env.alpha”和“.env.build”,其内容分别为:

NODE_ENV = 'production'
VUE_APP_TITLE = 'alpha'

  

NODE_ENV = 'production'
VUE_APP_TITLE = 'production'

  

3. 添加‘constans.ts’用来根据环境确定变量,其内容:let baseUrl: string = ""; //这里是一个默认的url,可以没有

switch (VUE_APP_TITLE) {
    case 'alpha':   // 注意这里的名字要和步骤二中设置的环境名字对应起来
        baseUrl = "http://www.cnblogs.com/XHappyness/"  //这里是测试环境中的url
        break
    case 'production':
        baseUrl = "https://www.cnblogs.com/XHappyness/p/7686267.html"   //生产环境url
        break
    default:
        baseUrl = "http://localhost:57156/"  //这里是本地的请求url
}

export default baseUrl;

  

4.在请求中引入设定的url,我这里用的是axiso,所以在axios的配置文件中引入并使用

import axios from 'axios'
import baseUrl from './constans'

axios.defaults.withCredentials = true;
axios.defaults.baseURL = baseUrl;

····

5.这样,npm run alpha即打测试环境报,npm run build则打生产包

 

总结,这主要得益于在 vue-cli 3.0.x 里面支持 “.env” 文件配置; 如果还有其他线上环境要配置,根据上面添加测试环境(alpha)的步骤依次添加即可

免责声明:文章转载自《vue-cli3实现分环境打包步骤(给不同的环境配置相对应的打包命令)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【华为大咖分享】3.如何做Code Review 与 结对编程?指数加权移动平均下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

git add --all 为啥不能添加空文件夹,这样设计的初衷是

git add --all 为啥不能添加空文件夹,这样设计的初衷是? 好多项目还得弄个假文件在空文件夹里面占位 这个算设计失误吧,见 https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3FCurrently the design of the git inde...

gulp使用(一)

gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nodejs中stream来读取和操作数据,其速度更快。如果你还没有使用过前端构建工具,或者觉得gruntjs太难用的话,那就尝试一下gulp吧。   本文导航:   gulp的安装 开始使用gulp gu...

如何合理优化WEB前端 高效提升WEB前端性能

对前端开发工程师来说,前端性能优化的重要性是不言而喻的,最为大家所知的是YSLOW的23条优化规则,在我的理解中,性能优化不纯粹是指用户访问网站的速度,也包括开发的效率,这里我总结下我理解中的WEB前端性能优化。 HTML部分 语义化HTML:好处在于可以使代码简洁清晰,支持不同设备,利于搜索引擎,便于团队开发; 减少DOM节点:加速页面渲染;...

idea配置docker

一、idea安装docker插件 欢迎页->Configure->Plugins插件使用说明 二、docker服务器开放监听端口 根据官网信息,docker默认只接受本地客户端的请求;若需要接受远程访问,可以使用docker.service系统单元文件来配置Docker以接受远程连接,该文件用于使用systemd的Linux发行版,例如RedH...

java导出生成word

最近做的项目,需要将一些信息导出到word中。在网上找了好多解决方案,现在将这几天的总结分享一下。 目前来看,java导出word大致有6种解决方案:   1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。D...

SVN提交注意点

网上看到一篇blog,发现总结得不错,共享一下 http://www.blogjava.net/sealyu/archive/2009/09/03/293717.html  一.提交之前先更新 1.         SVN更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。 2.         如果在修改的期间...