使用 TypeScript 创建工具函数:管理项目版本与环境变量

使用 TypeScript 创建工具函数:管理项目版本与环境变量

文章目录

  • 使用 TypeScript 创建工具函数:管理项目版本与环境变量
  • 一、前言
  • 二、代码示例
    • 1、导入项目的 `package.json`
    • 2、获取版本号
    • 3、获取环境变量的值
    • 4、获取特定的环境变量
  • 三、完整代码
    • 1、工具函数
    • 2、环境代码示例

一、前言

在我们的日常开发中,获取项目的版本信息和环境变量是很常见的需求。尤其是在前后端分离的项目中,前端可能需要知道当前的环境(开发环境、测试环境还是生产环境),以便决定如何处理各种情况。

二、代码示例

1、导入项目的 package.json

首先,我们通过 import 语句将项目的 package.json 文件导入到我们的工具函数模块中。

// 导入项目的 package.json 文件,用于获取项目版本等信息
// 需要根据实际情况调整文件路径
import pkg from '../../package.json'

2、获取版本号

我们创建一个名为 getPkgVersion 的函数,返回项目的版本号。

/*** @description: 获取版本号* @returns: 版本号*/
export function getPkgVersion(): string {return pkg.version
}

3、获取环境变量的值

接下来,我们创建一个通用的 getEnvValue 函数,用于获取环境变量。

/*** @description: 获取环境变量的值* @param key 环境变量的键* @returns: 返回环境变量的值*/
export function getEnvValue<T = any>(key: string): T {// 使用 import.meta.env 获取环境变量return (import.meta.env as any)[key] as T
}

4、获取特定的环境变量

有时,我们可能需要获取特定的环境变量,比如 VITE_BASE_URLVITE_UPLOAD_URL

/*** @description: 获取环境变量 VITE_BASE_URL 的值* @returns: 返回 VITE_BASE_URL 的值或空字符串*/
export function getBaseUrl(): string {// 返回环境变量 'VITE_BASE_URL' 的值return getEnvValue<string>('VITE_BASE_URL')
}/*** @description: 获取环境变量 VITE_UPLOAD_URL 的值* @returns: 返回 VITE_UPLOAD_URL 的值或 '/upload'*/
export function getUploadUrl(): string {// 否则,返回环境变量 'VITE_UPLOAD_URL' 的值return getEnvValue<string>('VITE_UPLOAD_URL')
}

三、完整代码

1、工具函数

// 导入项目的 package.json 文件,用于获取项目版本等信息
// 需要根据实际情况调整文件路径
import pkg from '../../package.json'/*** @description: 获取版本号* @returns: 版本号*/
export function getPkgVersion(): string {return pkg.version
}/*** @description: 获取环境变量的值* @param key 环境变量的键* @returns: 返回环境变量的值*/
export function getEnvValue<T = any>(key: string): T {// 使用 import.meta.env 获取环境变量return (import.meta.env as any)[key] as T
}/*** @description: 获取环境变量 VITE_BASE_URL 的值* @returns: 返回 VITE_BASE_URL 的值或空字符串*/
export function getBaseUrl(): string {// 返回环境变量 'VITE_BASE_URL' 的值return getEnvValue<string>('VITE_BASE_URL')
}/*** @description: 获取环境变量 VITE_UPLOAD_URL 的值* @returns: 返回 VITE_UPLOAD_URL 的值或 '/upload'*/
export function getUploadUrl(): string {// 否则,返回环境变量 'VITE_UPLOAD_URL' 的值return getEnvValue<string>('VITE_UPLOAD_URL')
}

2、环境代码示例

# BASE_URL
VITE_BASE_URL = https://localhost:8080# 上传域名
VITE_UPLOAD_URL = /upload

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

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

相关文章

C++ 面试题(一)--C++基础,面向对象,内存管理

目录 1.part1 C基础 1 C特点 2 说说C语言和C的区别 3 说说 C中 struct 和 class 的区别 4 include头文件的顺序以及双引号""和尖括号<>的区别 5 说说C结构体和C结构体的区别 6 导入C函数的关键字是什么&#xff0c;C编译时和C有什么不同&#xff1f; 7…

系统架构设计高级技能 · 云原生架构设计理论与实践

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

新能源汽车动力总成系统及技术

需要动力系统总成的请联&#xff1a;shbinzer 拆车邦 需要动力系统总成的请联&#xff1a;shbinzer 拆车邦 需要动力系统总成的请联&#xff1a;shbinzer 拆车邦 需要动力系统总成的请联&#xff1a;shbinzer 拆车邦 需要动力系统总成的请联&#xff1a;shbinzer …

使用Python构建网络爬虫:提取网页内容和图片资源

网络爬虫是一种自动获取网页内容的程序&#xff0c;它可以帮助我们高效地收集网络上的有价值信息。本文将介绍如何使用Python构建网络爬虫&#xff0c;提取网页内容和图片资源。   一、环境准备   1.安装Python环境   首先&#xff0c;确保您已经安装了Python环境。访问P…

Android studio中EditText设置默认值

如果想对EditText设置默认值&#xff0c;在java代码中使用setText函数是不行的&#xff0c;需要在layout文件中设置“text变量”&#xff0c;如下所示设置默认值为“192.168.1.1”&#xff1a; <EditTextandroid:id"id/car1_ip_edit"android:layout_width"1…

kettle实现爬虫

步骤概览 获取请求 请求地址 东方财富网股票请求 自定义常量数据 获取HTTP请求之前&#xff0c;必须先定义一个URL常量作为HTTP client的输入 HTTP client 注&#xff1a;此处得到的数据并不是原生的json字符串&#xff0c;自己可以用文本文件输出测试以下。如下图 JavaScri…

QT登陆注册界面练习

一、界面展示 二、主要功能界面代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QMainWindow(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setFixedSize(540,410); //设置固定尺寸th…

react+koa+vite前后端模拟jwt鉴权过程

路由组件&#xff08;生成token&#xff09; const Router require(koa/router) const jwt require(jsonwebtoken); const router new Router()const mockDbUserInfo [{nickname: xxxliu,username: Tom,password: 123456,icon: url1},{nickname: xxx,username: John,passw…

设计模式二十三:模板方法模式(Template Method Pattern)

定义了一个算法的框架&#xff0c;将算法的具体步骤延迟到子类中实现。这样可以在不改变算法结构的情况下&#xff0c;允许子类重写算法的特定步骤以满足自己的需求 模版方法使用场景 算法框架固定&#xff0c;但具体步骤可以变化&#xff1a;当你有一个算法的整体结构是固定…

android Junit4编写自测用例

10多年的android开发经验&#xff0c;一直以来呢&#xff0c;也没有使用过android自带的测试代码编写。说来也惭愧。今天也花了点时间稍微研究了下。还挺简单。接下来就简单的说一下。 新建工程 直接默认新建一个工程&#xff0c;就会有两个目录androidTest和test(unitTest)两…

mac下安装tomcat

1. 官网下载Apache Tomcat - Apache Tomcat 9 Software Downloads 2. 授权bin目录下所有.sh文件权限sudo chmod 755 *.sh 3. 启动程序(后台运行) sudo sh ./startup.sh 4. 在当前窗口启动程序&#xff0c;随时看到日志sudo sh ./catalina.sh run 5. 关闭程序 sudo sh ./shu…

CSS中如何改变鼠标指针样式(cursor)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS中改变鼠标指针样式&#xff08;cursor&#xff09;⭐ 示例&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅…

解决Graphics2D造成的中文乱码问题

解决Graphics2D 分别在 linux下与docker下的乱码问题 一、linux 下载宋体&#xff0c;并将宋体文件拷贝到/usr/share/fonts/chinese下&#xff0c;下载地址宋体&#xff0c;或从本地window的C:\Windows\Fonts下复制。安装字体索引工具 yum install -y mkfontscale yum instal…

免费OCR图像识别文字识别API

免费OCR图像识别文字识别API 一、OCR图像识别文字识别二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、温馨提示 一、OCR图像识别文字识别 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;是指对文本资料的图像文件进行分析识别…

Visual Studio 2022的MFC框架——AfxWinMain全局对象和InitInstance函数

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。 在看这篇帖子前&#xff0c;请先看我的另一篇帖子《Visual Studio 2022的MFC框架——应用程序向导》。 当程序调用了CWinApp类的构造…

No message found under code ‘-1‘ for locale ‘zh_CN‘.

导出中的报错&#xff1a;No message found under code -1 for locale zh_CN. 报错原因&#xff1a;页面中展示的数据和后端excel中的数据不一致导致 具体原因&#xff1a;

【C语言】#define 宏定义初步使用

使用宏定义可以防止出错&#xff0c;提高可移植性&#xff0c;可读性&#xff0c;方便性等。 下面列举了一些成熟软件中常用的宏定义。 重新定义一些基本类型 重新定义一些类型&#xff0c;防止由于各种平台和编译器的不同&#xff0c;而产生的类型字节数差异&#xff0c;方便…

java springboot sql防注入的6种方式

​在Spring Boot中&#xff0c;可以通过使用参数绑定、预处理语句和使用ORM框架等方式来防止SQL注入。以下是几种常见的方式&#xff1a; 1. 参数绑定&#xff1a;通过使用参数绑定&#xff0c;将用户输入的数据作为参数传递给SQL语句&#xff0c;而不是将其直接拼接到SQL语句中…

【记录】Truenas scale|NFSv4数据集的子目录或文件的ACL完全访问权限继承老是继承不了怎么回事

我遇到了数据集下新建文件夹或文件&#xff0c;新建的文件夹或文件没有和数据集的ACL设置相符合的情况。其根本原因是NFSv4的完全访问权限要想继承的话&#xff0c;它的访问设置权限要设置“用户”和“组”的&#xff0c;就是&#xff0c;一定要选择中文的那个设置。纯owner和g…

FairyGUI编辑器的弹窗操作【插件】

之前在FairyGUI编辑器菜单扩展中&#xff0c;我使用了App.Alert("复制失败")来提示操作是否成功。这篇则会说一下我们可以使用的弹窗提示&#xff0c;以及做到类似资源发布成功时的“发布成功”飘窗。 打开APP的API脚本&#xff0c;可以看到有很多公开方法&#xff…