您当前的位置:首页 > 电脑百科 > 程序开发 > 前端

Web前端工程化开发中,这样配置多环境,既灵活又优雅

时间:2023-04-07 11:35:36  来源:今日头条  作者:前端梁哥

在Web前端工程化开发中,我们通常需要多个环境,至少需要开发和生产环境,也可能还需要不同的测试环境。那么,我是怎样配置多环境的呢?

通常,一些脚手架都有配置多环境的解决方案,比如在项目根目录创建多个.env文件。但我不喜欢在根目录创建很多.env文件,我觉得这样不够优雅,也不够灵活,并没有采用这种方案,而是使用了其它的解决方案。

我使用了一个第三方包,叫:env-cmd,它的用法非常简单。我们需要创建一个环境变量配置文件,扩展名可以是json或者js,文件名可以随便起,可以放到任何目录,使用时指定配置文件路径即可。

我比较推荐在项目根目录创建一个.env-cmdrc.js文件,因为这么做就不需要指定配置文件路径了,env-cmd默认查找的就是根目录的这个文件。扩展名也可以是json,但我推荐用js,为什么呢?因为js更加灵活。

首先,提醒大家一点,自定义的环境变量,命名一定要遵守脚手架的命名约定,比如:vue-cli要求必须以VUE_App_开头。

如下代码是env-cmd的配置文件长相,导出的对象属性名就是env-cmd 环境名字,这是用js的方式。如果用json,就不需要导出了。

// .env-cmdrc.js
module.exports = {
  development: {
    API_BASE: '/api'
  },
  production: {
    API_BASE: '/'
  },
  test: {
    API_BASE: '/'
  }
}

以下代码是我们其中一个项目的配置,大家看到js作为配置文件的优势了吧?

// .env-cmdrc.js
const envList = [
  {
    MODE: 'development',
    API_BASE: '/api',
    FILE_BASE: '/files'
  },
  {
    MODE: 'production',
    API_BASE: '/'
  }
]

module.exports = envList.reduce((t, _) => {
  return {
    ...t,
    [_.MODE]: {
      ..._,
      APP_NAME: _.APP_NAME || 'XXXX管理后台'
    }
  }
}, {})

那么,有了配置文件,我们该如何使用呢?只需在package.json中的开发和构建脚本之前增加env-cmd -e命令,用于指定环境,以下就是使用方法。

"scripts": {
    "dev": "env-cmd -e development vite",
    "dist": "vite build",
    "build": "env-cmd -e production npm run dist"
  }

如果你用的vite,或者其它无法自动注入环境变量的脚手架,就需要你手动将环境变量注入应用了,如下是vite的注入例子。大家能理解吧?

import { defineConfig } from 'vite'

export default defineConfig({
  define: [
    'MODE',
    'API_BASE',
    'APP_NAME',
    'FILE_BASE'
  ].reduce((t, k) => ({ ...t, [`process.env.${k}`]: JSON.stringify(process.env[k]) }), {}),
})

下面是在我们的应用中使用的例子。

/** @type {string} 多环境配置中的环境名 */
export const ENV_NAME = process.env.MODE

/** @type {string} 接口baseUrl */
export const API_BASE = process.env.API_BASE

/** @type {string} 文件baseUrl */
export const FILE_BASE = process.env.FILE_BASE

/** @type {string} 应用名称 */
export const APP_NAME = process.env.APP_NAME

感谢阅读!是不是很简单?童鞋们都学废了吗?



Tags:Web前端   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
给Web前端工程师看的用Rust开发wasm组件实战
什么是wasm组件?wasm 全称 WebAssembly,是通过虚拟机的方式,可以在服务端、客户端如浏览器等环境执行的二进制程序。它有速度快、效率高、可移植的特点。对我们 Web 前端工程最...【详细内容】
2023-09-22  Search: Web前端  点击:(251)  评论:(0)  加入收藏
9个目前流行的Web前端框架
启动项目时,请查看 2023 年最好的 Web 前端框架。为什么选择合适的工具很重要?前端开发人员使用前端框架来简化工作。这些软件包通常提供可重用的代码模块、系统化的前端技术...【详细内容】
2023-07-24  Search: Web前端  点击:(204)  评论:(0)  加入收藏
Web前端开发必备,Vue事件修饰符全通晓
Vue.js是一种流行的前端框架,用于创建交互式UI。在Vue中,事件修饰符是一种技术,可以增强绑定到DOM事件上的行为。修饰符是指以点号(.)分隔的特殊后缀,通过将修饰符添加到事件名...【详细内容】
2023-04-29  Search: Web前端  点击:(351)  评论:(0)  加入收藏
web前端工资一般多少
最近数据统计显示,web前端开发工程师的薪资区间(以北京为例)大约在 2 - 50K,其中 20-30K 的岗位最多占 30.8%2023年以来web前端开发工程师的需求量逐渐稳步提升web前端开发全国...【详细内容】
2023-04-18  Search: Web前端  点击:(287)  评论:(0)  加入收藏
Web前端工程化开发中,这样配置多环境,既灵活又优雅
在Web前端工程化开发中,我们通常需要多个环境,至少需要开发和生产环境,也可能还需要不同的测试环境。那么,我是怎样配置多环境的呢?通常,一些脚手架都有配置多环境的解决方案,比如...【详细内容】
2023-04-07  Search: Web前端  点击:(152)  评论:(0)  加入收藏
Web前端的职业路线有哪些?
学习咨询上元董老师 18112716067最近不少小伙伴问我:“上元君,我学Web前端是不是一辈子只能做程序猿,那是不是要秃头”“除了做前端工程师还有什么可以做啊”等等一类的问题。...【详细内容】
2023-04-06  Search: Web前端  点击:(120)  评论:(0)  加入收藏
Web前端的未来发展怎样?
20年前的网页首页 从表中可以看出,工资在20k-30k范围内的岗位占了30.2%,占比最大,更有一部分精英薪资水平达到30k+。在求职的道路上,很多人都会经历漫长的迷茫期,如何找到职业方...【详细内容】
2023-02-16  Search: Web前端  点击:(116)  评论:(0)  加入收藏
12个Web前端开发工具,收藏了
如今,大多数组织都专注于前端开发,以提高用户参与度,产生投资回报率,网站效率和更好的网站外观。所有这些因素都有助于增强数字平台的业务可见性。目前市场上有很多前端开发工具...【详细内容】
2022-11-28  Search: Web前端  点击:(300)  评论:(0)  加入收藏
现在Web前端工程师年薪区间是多少?
对于互联网公司来说用户就是上帝,做好客户体验一切才有可能。所以互联网公司都会把钱砸向前端,Web前端程序员也越来越受到企业争相聘用。但web前端工程师真的那么值钱吗?1web前...【详细内容】
2022-11-08  Search: Web前端  点击:(194)  评论:(0)  加入收藏
Web前端开发推荐 6 个实用的 Vue 组件库
Vue 是目前用于创建用户界面的最佳 JavaScript 框架之一,本文推荐 Vue 项目开发用得上的 6 个第三方库,这些库基本可以覆盖项目大部份需求,有效的提高项目开发效率。如果不希望...【详细内容】
2022-07-18  Search: Web前端  点击:(763)  评论:(0)  加入收藏
▌简易百科推荐
20k级别前端是怎么使用LocalStorage的,想知道吗?
当咱们把咱们想缓存的东西,存在localStorage、sessionStorage中,在开发过程中,确实有利于咱们的开发,咱们想看的时候也是一目了然,点击Application就可以看到。前言大家好,我是林...【详细内容】
2024-03-26  前端之神  微信公众号  Tags:前端   点击:(12)  评论:(0)  加入收藏
前端不存在了?盲测64%的人更喜欢GPT-4V的设计,杨笛一等团队新作
3 月 9 日央视的一档节目上,百度创始人、董事长兼 CEO 李彦宏指出,以后不会存在「程序员」这种职业了,因为只要会说话,人人都会具备程序员的能力。「未来的编程语言只会剩下两种...【详细内容】
2024-03-11  机器之心Pro    Tags:前端   点击:(9)  评论:(0)  加入收藏
前端开始“锈化”?Vue团队开源JS打包工具:基于Rust、速度极快、尤雨溪主导
Vue 团队已正式开源Rolldown —— 基于 Rust 的 JavaScrip 打包工具。Rolldown 是使用 Rust 开发的 Rollup 替代品,它提供与 Rollup 兼容的应用程序接口和插件接口...【详细内容】
2024-03-09  OSC开源社区    Tags:Vue   点击:(11)  评论:(0)  加入收藏
两年前端经验还不会手写Promise?
什么是promise?当我们处理异步操作时,我们经常需要进行一系列的操作,如请求数据、处理数据、渲染UI等。在过去,这些操作通常通过回调函数来处理,但是回调函数嵌套过多会导致代码...【详细内容】
2024-03-07  海燕技术栈  微信公众号  Tags:Promise   点击:(23)  评论:(0)  加入收藏
网站开发中的前端和后端开发有什么区别
前端开发和后端开发都是干什么的?有哪些区别?通俗地讲,前端干的工作是用户可以直接看得见的,而后端开发的工作主要在服务端,用户不太能直接看到。虽然前端开发和后端开发的工作有...【详细内容】
2024-02-21  CarryData    Tags:前端   点击:(32)  评论:(0)  加入收藏
网站程序开发中的前后端分离技术
随着互联网的快速发展和技术的不断创新,传统的网站开发模式已经难以满足日益增长的业务需求。为了提高开发效率、增强系统的可维护性和可扩展性,前后端分离技术逐渐成为了网站...【详细内容】
2024-01-31  网站建设派迪星航    Tags:前后端分离   点击:(23)  评论:(0)  加入收藏
如何优雅的实现前端国际化?
JavaScript 中每个常见问题都有许多成熟的解决方案。当然,国际化 (i18n) 也不例外,有很多成熟的 JavaScript i18n 库可供选择,下面就来分享一些热门的前端国际化库!i18nexti18ne...【详细内容】
2024-01-17  前端充电宝  微信公众号  Tags:前端   点击:(69)  评论:(0)  加入收藏
Vue中Scope是怎么做样式隔离的?
scope样式隔离在 Vue 中,样式隔离是通过 scoped 特性实现的。当在一个组件的 <style> 标签上添加 scoped 特性时,Vue 会自动为这个样式块中的所有选择器添加一个唯一的属性,以...【详细内容】
2024-01-04  海燕技术栈  微信公众号  Tags:Vue   点击:(80)  评论:(0)  加入收藏
vue3中 ref和 reactive的区别 ?
最近有朋友在面试过程中经常被问到这么一个问题,vue3 中的ref 和 reactive的区别在哪里,为什么 要定义两个API 一个 api不能实现 响应式更新吗??带着这个疑问 ,我们 接下来进行逐...【详细内容】
2024-01-03  互联网高级架构师  今日头条  Tags:vue3   点击:(38)  评论:(0)  加入收藏
React18 与 Vue3 全方面对比
1. 编程风格 & 视图风格1.1 编程风格 React 语法少、难度大;Vue 语法多,难度小例如指令:Vue<input v-model="username"/><ul> <li v-for="(item,index) in list" :key="inde...【详细内容】
2024-01-03  爱做梦的程序员  今日头条  Tags:Vue3   点击:(72)  评论:(0)  加入收藏
站内最新
站内热门
站内头条