vue2项目从0搭建(三):配置环境变量及对应的webpack配置

前言

实际业务开发中,一个项目很可能会同时配置好几套环境。

比如:常规开发环境,开发测试环境,正式的测试环境,预发测试环境,客户甲的生产环境,客户乙的生产环境,通用生产环境,独立应用环境,微前端环境,大屏专用环境,移动端环境。

一女多嫁的实际业务场景,就需要我们进行多样化的环境配置。不同的环境需要有不同的一些标识,也要有一些不同的webpack配置或者资源优化。

vue-cli环境变量配置

在vue-cli中,想要配置环境变量,需要在根目录层级配置.env.[envName]的文件,这里的[envName]就是你配置的环境名称

官方文档在这里:模式和环境变量 | Vue CLI

.env.[...]类型的文件内部,需要按照key=value的格式去写

NODE_ENV为环境名称,个人自定义的变量需要按照固定格式去写

开发环境(.env.development)

NODE_ENV=development
VUE_APP_SET_NAME=development
VUE_APP_SET_OTHER=devOther

 开发测试环境(env.developtest)

NODE_ENV=developtest
VUE_APP_TITLE=testTitle
VUE_APP_URL=baidu.com
VUE_APP_SDK=false

至于怎么引用这两个文件,就需要我们配置对应的运行命令,

语法: 运行命令 --mode modeName

package.json

根据环境类型使用不同的webpack配置

vue.config.js是用来配置脚手架编译打包时候的的配置,基本都是webpack中的配置

我们可以给每个环境去创建一个他对应的webpack配置,并且在构建或者打包时引入

vue.config.js

const { defineConfig } = require('@vue/cli-service')console.log(process.env.NODE_ENV,'环境')
let envName = process.env.NODE_ENV
let config = {}
switch(envName){case 'developtest':config = require('./developTest.config');breakcase 'development':config = require('./development.config')
}module.exports = defineConfig(config)

开发环境配置:development.config.js

const fs = require('fs')
const path = require('path')
console.log('development环境配置文件')
let version_info = JSON.stringify({version:"1.1.0",modeName:'development'})
fs.writeFile(path.join(__dirname,'./public/version.json'),version_info,function(err){if(err){return }
})
module.exports = {transpileDependencies: true,lintOnSave: false,devServer:{client:{overlay:false},port:8080,open:true,proxy:{'/server1':{target:'http://localhost:3001',ws:false,changeOrigin:true,pathRewrite:{'^/server1':''}},'/server2':{target:'http://localhost:3002',ws:false,changeOrigin:true,pathRewrite:{'^/server2':''}}}}}

开发测试环境配置:developTest.config.js

const fs = require('fs')
const path = require('path')
console.log('developTest环境配置文件')
let version_info = JSON.stringify({version:"1.1.0",modeName:'developTest'})
fs.writeFile(path.join(__dirname,'./public/version.json'),version_info,function(err){if(err){return }
})
module.exports = {transpileDependencies: true,lintOnSave: false,devServer:{client:{overlay:false},port:8080,open:true,proxy:{'/server1':{target:'http://localhost:3001',ws:false,changeOrigin:true,pathRewrite:{'^/server1':''}},'/server2':{target:'http://localhost:3002',ws:false,changeOrigin:true,pathRewrite:{'^/server2':''}}}}}

查看效果

环境变量

在vue项目中,你可以在任何组件,引用的js文件,甚至根文件html中引用process.env这个值去查看当前的环境字段值

开发环境

启动开发环境

运行npm run serve命令,

查看自定义的变量
<template><div><el-button @click="checkEnvInfo">查看环境信息</el-button><p>当前环境名称:{{ envName }}</p></div>
</template>
<script>
export default {name: 'envMode',data(){return{envName:''}},created(){this.envName = process.env.NODE_ENV},methods:{checkEnvInfo(){console.log(process.env)}}
}
</script>

查看版本

 开发测试环境

启动开发测试环境

查看自定义的变量

查看版本

 结束语

个人认为这里的知识是十分重要的,因为这里对于工作中实际交付项目或者多客户客制化开发是很重要的。

我是在京东做过微前端的开发,当时是需要根据环境打包多个版本,或者原有的独立项目如果作为子应用,需要消除应用原有的菜单项,还有主题色的控制,接口url来源等等。

所以,想要独立去负责一个项目,这些是必须掌握的基础知识。

感觉有用的给个赞吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/215808.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 有多个普通索引时会取哪一个索引?

我们都知道MySQL在查询时底层会进行索引的优化&#xff0c;假设有两个普通索引&#xff0c;且where 后面也根据这两个普通索引查询数据&#xff0c;那么执行查询语句时会使用到那个索引&#xff1f; 为了方便演示&#xff0c;新建users表&#xff0c;新建idx_name、idx_city这两…

Elasticsearch集群部署

组件介绍 1、Elasticsearch&#xff1a; 是基于一个Lucene的搜索引擎&#xff0c;提供搜索&#xff0c;分析。存储数据三大功能&#xff0c;他提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口&#xff0c;Elasticsearch是用Java开发的&#xff0c;…

Ps:画笔工具的基本操作

画笔工具 Brush Tool是 Ps 中最常用的工具&#xff0c;广泛地用于绘画与修饰工作。 虽然多数操作可在画笔工具的工具选项栏中选择执行&#xff0c;但是如果能记住相应的快捷键可大大提高工作效率。 熟练掌握画笔工具的操作对于使用其他工具也非常有益&#xff0c;因为 Ps 中许多…

Oracle研学-介绍及安装

一 ORACLE数据库特点: 支持多用户&#xff0c;大事务量的事务处理数据安全性和完整性控制支持分布式数据处理可移植性(跨平台&#xff0c;linux转Windows) 二 ORACLE体系结构 数据库&#xff1a;oracle是一个全局数据库&#xff0c;一个数据库可以有多个实例&#xff0c;每个…

vs2015如何远程启动程序来进行调试

vs远程调试的方式有两种&#xff0c;远程启动方式和附加进程方式。   一般来说&#xff0c;咱们使用vs调试代码时&#xff0c;直接附加进程即可&#xff0c;但某些时候附加进程方式无法命中断点。比如我们想调试的C代码&#xff0c;但是调试的入口程序是C#程序&#xff0c;如…

2023亚太杯数学建模B题完整原创论文讲解

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2023亚太地区数学建模竞赛B题玻璃温室的微气候调控完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 论文共6…

数字图像处理基础-用通俗语言进行超详细的总结

目录 图像感知与获取 韦伯定理 马赫带效应 图像获取 图像的采样和量化 图像内插&#xff08;重采样&#xff09; 图像的表示与描述 像素间的关系 exercise&#xff1a;4-邻域连通区域标记 本文章讲解数字图像处理的基础&#xff0c;大部分内容来源于课堂笔记中 图像感…

有序表的详解

目录 有序表的介绍 树的左旋和右旋操作 AVL树的详解 SB树的详解 红黑树的介绍 SkipList的详解 有序表的介绍 有序表是除具备哈希表所具备的功能外&#xff0c;有序表中的内容都是按照key有序排列的&#xff0c;并且增删改查等操作的时间复杂度都是&#xff0c;红黑树&…

【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步?

【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步&#xff1f; 文章目录 【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步&#xff1f;一、简介软件特色演示&#xff1a; 二、使用免费群晖虚拟机搭建群晖Synology Drive服务&#xff0c;实现局域网同步1 安…

postgresql从入门到精通 - 第35讲:中间件PgBouncer部署|PostgreSQL教程

PostgreSQL从小白到专家&#xff0c;是从入门逐渐能力提升的一个系列教程&#xff0c;内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容&#xff0c;希望对热爱PG、学习PG的同学们有帮助&#xff0c;欢迎持续关注CUUG PG技术大讲堂。 第35讲&#…

【maven】【IDEA】idea中使用maven编译项目,报错java: 错误: 找不到符号 【2】

idea中使用maven编译项目,报错java: 错误: 找不到符号 错误状况展示: 如果报这种错,是因为项目中真的找不到报错的方法或者枚举 字段之类的,但实际是 : 点击 File Path

基于SRGAN的人脸图像超分辨率

引言 SRGAN是第一个将GAN用在图像超分辨率上的模型。在这之前&#xff0c;超分辨率常用的损失是L1、L2这种像素损失&#xff0c;这使得模型倾向于学习到平均的结果&#xff0c;也就是给低分辨率图像增加“模糊的细节”。SRGAN引入GAN来解决这个问题。GAN可以生成“真实”的图像…