vue项目打包获取git commit信息并输出到打包后的指定文件夹中
需求背景:
前端项目经常打包,发包部署,为了方便测试及运维发现问题时与正确commit信息对比
实现方式:
使用Node.js的child_process模块来执行git命令
实现步骤:
1.在package.json的同级目录下新建一个version.js文件。内容可根据自己的实际需求来定,
const execSync = require('child_process').execSync;
const fs = require('fs');// 读取package.json文件
const data = fs.readFileSync('./package.json');
const packageData = JSON.parse(data);// 获取git信息的相关命令
const COMMITHASH_COMMAND = 'rev-parse HEAD';
const VERSION_COMMAND = 'describe --always';
const BRANCH_COMMAND = 'rev-parse --abbrev-ref HEAD';
const NEW_COMMIT_MESSAGE = 'log -1 --pretty=%B';
const COMMIT_TIME = 'show -s --format=%cd';
try {const d = new Date();const commitId = execSync(`git ${COMMITHASH_COMMAND}`).toString().trim();const branch = execSync(`git ${BRANCH_COMMAND}`).toString().trim();const release = execSync(`git ${VERSION_COMMAND}`).toString().trim();const commitMessage = execSync(`git ${NEW_COMMIT_MESSAGE}`).toString().trim();const commitTime = execSync(`git ${COMMIT_TIME}`).toString().trim();const versionStr = `COMMIT_ID: ${commitId}Branch: ${branch}Release: ${release}CommitMessage: ${commitMessage}CommitTime: ${commitTime}PackingTime: ${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()} ${d.getHours()}:${d.getMinutes()}Version: ${packageData.version}`;fs.writeFileSync(`dist/version.txt`, versionStr);
} catch (e) {throw new Error(e);
}
2.修改package.json的打包脚本:

3.使用npm run build:prod进行打包会输出version.txt文件在dist目录下
详情如下:

ps:
在浏览器环境下直接执行 Node.js 的 child_process 模块是不可行的,因为浏览器环境无法直接访问操作系统的命令行
相关文章:
vue项目打包获取git commit信息并输出到打包后的指定文件夹中
需求背景: 前端项目经常打包,发包部署,为了方便测试及运维发现问题时与正确commit信息对比 实现方式: 使用Node.js的child_process模块来执行git命令 实现步骤: 1.在package.json的同级目录下新建一个version.js文件。…...
vue 移动端app预览和保存pdf踩坑
需求 使用Vue开发h5,嵌套到Android和IOS的Webview里,需要实现pdf预览和保存功能,预览pdf的功能,我这边使用了三个库,pdf5,pdf.js,vue.pdf,现在把这三个库在app端的坑分享一下。先说…...
Vueuse:打造高效的 Vue.js 开发利器
Vueuse:打造高效的 Vue.js 开发利器 Vueuse 是一个功能强大的 Vue.js 生态系统工具库,它提供了一系列的可重用的 Vue 组件和函数,帮助开发者更轻松地构建复杂的应用程序。本文将介绍 Vueuse 的主要特点和用法,以及它在 Vue.js 开发…...
mysql锁的创建方式
在 MySQL 中,锁是用来控制多个用户对同一数据的访问。主要有两种类型的锁:表级锁和行级锁。MySQL 的锁定机制主要是通过 SQL 语句来实现的,而不是通过特定的锁定命令。下面是一些常见的锁相关的 SQL 操作方式:表级锁 MySQL 中,表级锁是最基本的锁策略,它会锁定整个表。一…...
5.WEB渗透测试-前置基础知识-常用的dos命令
内容参考于: 易锦网校会员专享课 上一篇内容:4.WEB渗透测试-前置基础知识-快速搭建渗透环境(下)-CSDN博客 常用的100个CMD指令 1.gpedit.msc—–组策略 2. sndrec32——-录音机 3. Nslookup——-IP地址侦测器 ,是一个…...
解决:code ERESOLVE:ERESOLVE could not resolve 的报错问题
报错实例 报错原因 是我执行npm i xxx-xx的时候会出现这个错误 查了资料表示是node.js的问题 或者的依赖本身的问题 解决 1.在后面加上 --legacy-peer-deps 示例:npm i sass-loader7.3.1 --legacy-peer-deps 2,检查node版本,更改node版本 …...
Dockerfile(3) - WORKDIR 指令详解
WORKDIR 切换到镜像中的指定路径,设置工作目录在 WORKDIR 中需要使用绝对路径,如果镜像中对应的路径不存在,会自动创建此目录一般用 WORKDIR 来替代 切换目录进行操作的指令 RUN cd <path> && <do something> WORKDIR…...
2024万元投影仪怎么选?极米RS10 Ultra和当贝X5 Ultra实测横评
随着过去一年投影仪的不断进步,高端型号在2024年初的选择变得更加多样。除了激光外混光已然成为“金字塔顶端”的一种全新光源选择。目前主流的就是作为Dual Light 2.0新升级的极米RS10 Ultra,以及ALPD5.0超级全色激光代表当贝X5 Ultra。很多人也肯定想知…...
java环境搭建
要搭建 Java 环境,你需要进行以下步骤: 1. 下载和安装 JDK(Java Development Kit):访问 Oracle 官方网站(https://www.oracle.com/java/technologies/javase-jdk14-downloads.html),…...
【GB28181】wvp-GB28181-pro快速修改登录页面名称(前端)
引言 作为一个非前端开发人员,自己摸索起来比较费劲,也浪费了很多时间 本文快速帮助开发者修改为自己名称的一个国标平台 文章目录 一、 预期效果展示二、 源码修改-前端三、 验证修改效果一、 预期效果展示 二、 源码修改-前端 需要修改的文件位置: 项目工程下web_src目录…...
【lv15 day1 设备号申请和注销】
一、Linux内核对设备的分类 linux的文件种类: -:普通文件 d:目录文件 p:管道文件 s:本地socket文件 l:链接文件 c:字符设备 b:块设备Linux内核按驱动程序实现模型框架的不同&#…...
JVM对象创建与内存分配机制
JVM对象创建与内存分配机制 JVM对象创建与内存分配机制 JVM对象创建与内存分配机制对象的创建过程内存分配对象栈上分配对象逃逸分析标量替换 对象在Eden区分配大对象直接进入老年代长期存活的对象将进入老年代对象年龄动态判断老年代空间分配担保机制 对象头与指针压缩对象头利…...
《TCP/IP详解 卷一》第10章 UDP和IP分片
目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子:IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…...
Android进阶之路 - RecyclerView停止滑动后Item自动居中(SnapHelper辅助类)
之前一直没注意 SnapHelper 辅助类的功能,去年的时候看到项目中仅通过俩行代码设置 RecyclerView 后就提升了用户体验,觉得还是很有必要了解一下,尝试过后才发现其 PagerSnapHelper、LinearSnapHelper 子类可以作用于不同场景,且听…...
高性能图表组件LightningChart .NET v11.0发布——增强DPI感知能力
LightningChart完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学&am…...
神经网络系列---计算图基本原理
文章目录 计算图符号微分符号微分的步骤示例符号微分在计算图中的使用总结 数值微分前向差分法中心差分法数值微分的使用注意事项总结 自动微分1. 基本原理2. 主要类型3. 计算图4. 应用5. 工具和库6. 优点和缺点 计算图1. **计算图的建立**2. **前向传播**3. **反向传播**4. **…...
3D数字孪生
数字孪生(Digital Twin)是物理对象、流程或系统的虚拟复制品,用于监控、分析和优化现实世界的对应物。 这些数字孪生在制造、工程和城市规划等领域变得越来越重要,因为它们使我们能够在现实世界中实施改变之前模拟和测试不同的场景…...
C++惯用法之空基类优化
相关系列文章 C惯用法之Pimpl C惯用法之CRTP(奇异递归模板模式) C之std::tuple(二) : 揭秘底层实现原理 目录 1.空类 2.空基类优化 3.内存布局原则 4.实例分析 5.总结 1.空类 C 中每个对象的实例都可以通过取地址运算符获取其在内存布局中的开始位置,因此每个类…...
【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train
Hung-yi Lee 课件整理 预训练得到的模型我们叫自监督学习模型(Self-supervised Learning),也叫基石模型(foundation modle)。 文章目录 机器是怎么学习的ChatGPT里面的监督学习GPT-2GPT-3和GPT-3.5GPTChatGPT支持多语言…...
Day03:Web架构OSS存储负载均衡CDN加速反向代理WAF防护
目录 WAF CDN OSS 反向代理 负载均衡 思维导图 章节知识点: 应用架构:Web/APP/云应用/三方服务/负载均衡等 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令:文件上传下载/端口服务/Shell反弹等 抓包技术:…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...
PydanticAI快速入门示例
参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
