当前位置: 首页 > news >正文

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 切换到镜像中的指定路径&#xff0c;设置工作目录在 WORKDIR 中需要使用绝对路径&#xff0c;如果镜像中对应的路径不存在&#xff0c;会自动创建此目录一般用 WORKDIR 来替代 切换目录进行操作的指令 RUN cd <path> && <do something> WORKDIR…...

2024万元投影仪怎么选?极米RS10 Ultra和当贝X5 Ultra实测横评

随着过去一年投影仪的不断进步&#xff0c;高端型号在2024年初的选择变得更加多样。除了激光外混光已然成为“金字塔顶端”的一种全新光源选择。目前主流的就是作为Dual Light 2.0新升级的极米RS10 Ultra&#xff0c;以及ALPD5.0超级全色激光代表当贝X5 Ultra。很多人也肯定想知…...

java环境搭建

要搭建 Java 环境&#xff0c;你需要进行以下步骤&#xff1a; 1. 下载和安装 JDK&#xff08;Java Development Kit&#xff09;&#xff1a;访问 Oracle 官方网站&#xff08;https://www.oracle.com/java/technologies/javase-jdk14-downloads.html&#xff09;&#xff0c;…...

【GB28181】wvp-GB28181-pro快速修改登录页面名称(前端)

引言 作为一个非前端开发人员,自己摸索起来比较费劲,也浪费了很多时间 本文快速帮助开发者修改为自己名称的一个国标平台 文章目录 一、 预期效果展示二、 源码修改-前端三、 验证修改效果一、 预期效果展示 二、 源码修改-前端 需要修改的文件位置: 项目工程下web_src目录…...

【lv15 day1 设备号申请和注销】

一、Linux内核对设备的分类 linux的文件种类&#xff1a; -&#xff1a;普通文件 d&#xff1a;目录文件 p&#xff1a;管道文件 s&#xff1a;本地socket文件 l&#xff1a;链接文件 c&#xff1a;字符设备 b&#xff1a;块设备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 例子&#xff1a;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 辅助类的功能&#xff0c;去年的时候看到项目中仅通过俩行代码设置 RecyclerView 后就提升了用户体验&#xff0c;觉得还是很有必要了解一下&#xff0c;尝试过后才发现其 PagerSnapHelper、LinearSnapHelper 子类可以作用于不同场景&#xff0c;且听…...

高性能图表组件LightningChart .NET v11.0发布——增强DPI感知能力

LightningChart完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科学&am…...

神经网络系列---计算图基本原理

文章目录 计算图符号微分符号微分的步骤示例符号微分在计算图中的使用总结 数值微分前向差分法中心差分法数值微分的使用注意事项总结 自动微分1. 基本原理2. 主要类型3. 计算图4. 应用5. 工具和库6. 优点和缺点 计算图1. **计算图的建立**2. **前向传播**3. **反向传播**4. **…...

3D数字孪生

数字孪生&#xff08;Digital Twin&#xff09;是物理对象、流程或系统的虚拟复制品&#xff0c;用于监控、分析和优化现实世界的对应物。 这些数字孪生在制造、工程和城市规划等领域变得越来越重要&#xff0c;因为它们使我们能够在现实世界中实施改变之前模拟和测试不同的场景…...

C++惯用法之空基类优化

相关系列文章 C惯用法之Pimpl C惯用法之CRTP(奇异递归模板模式) C之std::tuple(二) : 揭秘底层实现原理 目录 1.空类 2.空基类优化 3.内存布局原则 4.实例分析 5.总结 1.空类 C 中每个对象的实例都可以通过取地址运算符获取其在内存布局中的开始位置&#xff0c;因此每个类…...

【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train

Hung-yi Lee 课件整理 预训练得到的模型我们叫自监督学习模型&#xff08;Self-supervised Learning&#xff09;&#xff0c;也叫基石模型&#xff08;foundation modle&#xff09;。 文章目录 机器是怎么学习的ChatGPT里面的监督学习GPT-2GPT-3和GPT-3.5GPTChatGPT支持多语言…...

Day03:Web架构OSS存储负载均衡CDN加速反向代理WAF防护

目录 WAF CDN OSS 反向代理 负载均衡 思维导图 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服务/负载均衡等 安全产品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令&#xff1a;文件上传下载/端口服务/Shell反弹等 抓包技术&#xff1a…...

合并报表系统:多公司财务报表的自动合并

合并报表系统&#xff1a;多公司财务报表的自动合并 在全球化与集团化经营日益普遍的今天&#xff0c;企业往往需要管理多家子公司或分支机构的财务数据。传统的手工合并报表方式不仅耗时耗力&#xff0c;还容易因人为错误导致数据不准确。合并报表系统的出现&#xff0c;为企…...

武昌老酒回收电话

随着消费升级与收藏文化的兴起&#xff0c;名贵老酒已成为许多家庭和企业资产的一部分。在武汉武昌区&#xff0c;如何处理手中闲置或珍藏的老酒&#xff0c;实现其价值的安全、高效变现&#xff0c;是不少持有者关心的话题。本文将深入分析武昌老酒回收市场的现状&#xff0c;…...

iVX实战:手把手教你用零代码搭建一个企业内部OA系统(含表单和流程)

iVX实战&#xff1a;零代码构建企业OA系统的完整指南 当创业团队扩张到20人以上时&#xff0c;行政主管小张发现纸质审批流程已经严重拖累效率——报销单在部门间传递经常丢失&#xff0c;请假记录难以追踪统计。传统软件开发动辄数十万的报价和三个月起步的开发周期&#xff0…...

别只扫二维码!MISC隐写术实战:用Stegsolve和010Editor破解ISCC‘美人计’全流程

从二维码到密钥&#xff1a;深度解析MISC隐写术实战框架 在网络安全竞赛的MISC&#xff08;杂项&#xff09;题目中&#xff0c;隐写术往往是最考验选手综合能力的题型之一。不同于常规的漏洞利用或密码破解&#xff0c;隐写术题目通常需要选手具备敏锐的观察力、多工具协同能力…...

TypeScript谨慎使用指南:平衡类型安全与开发效率的终极教程

TypeScript谨慎使用指南&#xff1a;平衡类型安全与开发效率的终极教程 【免费下载链接】nodebestpractices :white_check_mark: The Node.js best practices list (July 2024) 项目地址: https://gitcode.com/GitHub_Trending/no/nodebestpractices TypeScript已成为现…...

统信UOS桌面版也能玩转经典街机?手把手教你用MAME模拟器搞定拳皇97

统信UOS桌面版怀旧游戏指南&#xff1a;MAME模拟器完美运行拳皇97全攻略 在数字化浪潮席卷的今天&#xff0c;复古游戏文化正悄然复兴。那些曾经风靡街机厅的经典作品&#xff0c;如今通过模拟器技术得以在现代化操作系统上重现。作为国产操作系统的代表&#xff0c;统信UOS桌面…...

Arduino IDE安装避坑指南:从下载到中文设置一步到位

Arduino IDE安装实战手册&#xff1a;从零开始打造高效开发环境 第一次打开Arduino IDE时&#xff0c;那个简洁到近乎简陋的界面让我误以为安装过程会像它的UI一样简单。直到亲眼目睹同事因为驱动问题折腾了整个下午&#xff0c;才意识到这个看似友好的工具背后藏着不少"新…...

如何优雅地完成项目数据库的初始化

简介 当项目在一个新的环境启动或部署时&#xff0c;必不可少的步骤是完成数据库的初始化 将所需要的数据库表&#xff0c;可能还有一些初始的配置数据一次性写入到数据库中 常规的做法&#xff0c;是将初始化脚本整理到项目的资源目录中&#xff0c;提醒开发程序员或者运维人员…...

特征融合实战:从Concat/Add到Attention的演进与选型

1. 特征融合的基础概念与核心价值 第一次接触特征融合这个概念时&#xff0c;我正为一个目标检测项目焦头烂额。当时模型对小物体检测效果特别差&#xff0c;前辈建议我试试特征金字塔融合。那是我第一次意识到&#xff0c;原来神经网络中的特征还能像调鸡尾酒一样混合搭配。简…...

Hailo8 Dataflow Compiler 模型转换指南--以 ONNX 模型为例

目录 一、环境安装 1.1 系统要求 1.2 系统包安装 二、模型转换 2.1 ONNX 转 HEF 文件 2.1.1 实例化 ClientRunner 解析ONNX模型 2.2.2 加载/准备量化校准数据集 2.2.3 参数配置并执行量化操作 2.2.4 保存 HAR 文件并编译生成 HEF 板端文件 2.2 模型可视化 一、环境安…...