node脚本, 封装git命令

谷歌zx:用JavaScript无缝编写Shell脚本,提升自动化开发效率 在软件开发与运维领域,脚本编写是连接应用逻辑与系统操作的关键环节。传统Shell脚本虽然直接高效,但在错误处理、数据交互和跨平台兼容性上存在局限,而Node.js的child_process模块调用又显得冗长。谷歌开源的zx工具正是为解决这一痛点而生,它基于JavaScript/TypeScript,通过Promise封装和模板字符串语法,将Shell命令执行无缝嵌入到现代JavaScript开发流程中。这一设计不仅统一了开发环境,还充分利用了npm生态,使得脚本编写在保持Shell原生威力的同时,获得了更 阅读详情

     最近有个需求每次提交版本都需要改变项目login页面的版本号,但是执行起来总是会忘记;
于是写了个node脚本,顺便学习了下shelljs, 代码如下


// require('shelljs/global'); 全局执行的shelljs 

const shell = require("shelljs");  // 执行文件操作
const argv = require('yargs').argv; // yargs 处理参数
const commit = argv._[0]

const path = `src\\pages\\login\\login.vue` // 要修改的文件路径

// 提取版本号最后的数字
function getLastStr(options) {
    return options.match(/\d+/g).slice(-1)[0]
}

// 替换版本号最后一位
function replaceLastStr(options, lastStr) {
    var arr = options.split('.')
    var lastIndex = arr.lastIndexOf(lastStr)
    arr.splice(lastIndex, 1, lastStr - 0 + 1)
    return arr.join('.')
}

// 获取文件里面匹配到的数据
var grepStr = shell.grep(/<version>.*<\/version>/, path).stdout

// 再次匹配解决grep匹配不精准的问题
var str = grepStr.match(/<version>.*<\/version>/)[0].replace('<version>', '').replace('</version>', '')

// 获取最后一位的版本号
var lastStr = getLastStr(str)

// 获取完整版本号
var repStr = replaceLastStr(str, lastStr)

// 执行git提交命令
shell.exec(`git pull`)

// 执行替换
shell.sed('-i', /<version>.*<\/version>/, `<version>${repStr}<\/version>`, path);

shell.exec('git add .')
shell.exec(`git commit -m "${commit}"`)
shell.exec(`git pull`)
shell.exec('git push')

脚本使用方式

执行 node 脚本文件名 "commit信息"的方式执行脚本
eg: node p '[fix]: xxxxx'

学习链接:

http://www.ruanyifeng.com/blog/2015/05/command-line-with-node.html
https://github.com/shelljs/shelljs

Codex+DeepSeek:非技术人员的AI编程入门实战指南 AI编程助手通过自然语言处理技术,将人类指令转化为可执行代码,其核心原理基于大语言模型的代码理解和生成能力。这种技术降低了编程门槛,让非技术人员也能快速实现自动化需求。在实际应用中,AI编程特别适合数据处理、报表生成等重复性任务场景。本文以Codex与DeepSeek-V4的组合为例,详细介绍了环境配置、API密钥获取、代码调试等关键步骤。通过具体的Python数据分析案例,展示了如何将业务需求转化为AI能理解的指令,并利用Agent Skills功能构建可复用的自动化工作流。对于编程新手来说,掌握与AI协 阅读详情

相关推荐

基于Node.js的Git仓库管理工具git-renode实战应用

在现代软件开发中,Git已成为版本控制的事实标准,但其命令行接口复杂、语义晦涩,尤其对新手或跨项目频繁切换的开发者构成使用门槛。git-renode应运而生,旨在通过高层抽象封装常用Git操作,降低学习成本并提升协作效率。该工具基于Node.js构建,提供语义化命令集,涵盖克隆、推送、拉取、分支管理、提交历史查看、版本回退、标签操作与冲突解决等全生命周期操作。例如:支持单分支浅克隆,自动推导目录名,并集成失败重试机制。graph LRA[用户命令] --> B{操作类型}

weixin_29069575的博客 1089

vue 实践记录

打包后使用相对路径 在 build/webpack.prod.conf.js 的 output 节点添加配置:publicPath: './' 打包时使用shell复制文件 在入口 build/build.js 中使用. 引入 shelljs库 require('shelljs/global') 使用示例:cp('-R', 'favicon.ico', config.build.assets...

weixin_30918415的博客 222

Node.js-git-js一个轻量级接口用于在任何node.js应用程序中运行git命令

git-js 一个轻量级接口,用于在任何node.js应用程序中运行git命令

nodejs shell交互_javascript - node.js shell命令执行

javascript - node.js shell命令执行我仍然试图掌握如何运行linux或windows shell命令以及在node.js中捕获输出的更好点; 最终,我想做这样的事......//pseudocodeoutput = run_command(cmd, args)重要的是child_process.exec必须可用于全局范围的变量(或对象)。 我尝试了以下功能,但出于某种原...

weixin_33880392的博客 811

从CPU视角看PCIe:深入理解x86/ARM平台上BAR、MMIO和PIO的地址翻译与访问机制

本文深入探讨了CPU如何通过BAR、MMIO和PIO机制访问PCIe设备的配置空间,详细解析了x86和ARM平台在地址翻译与访问路径上的差异。重点分析了PCIe配置空间中BAR寄存器的作用与探测机制,以及操作系统如何管理PCIe资源,为开发者提供了性能优化与调试的实用技巧。

weixin_30175731的博客 324

224G PAM-4 通道的 PCB 和封装设计

该行业正在努力实现层厚非常低的 sub-Dk = 3 材料,以及更先进的加工,这将使封装和 PCB 中的透射电镜截止值更高。当回波损耗占主导地位时,我们基本上需要去除沿互连产生阻抗失配的任何元件,就像上面描述的更光滑的铜和更低的 Dk 值一样。第二个影响是传输线阻抗匹配在 56 GHz 范围内的非常高的频率下非常困难的主要原因之一,另一个因素是 Tx 或 Rx 封装/缓冲器中的寄生效应。由于 PCB 和封装中的长度刻度,这是 BGA 上的焊盘、过孔和球等小结构开始在输入阻抗中产生明显偏差的频率范围。

jkh920184196的博客 841

node命令操作git版本工具

node命令操作git

aflylong的博客 1028

SAP ABAP干货:用REUSE_ALV_GRID_DISPLAY_LVC实现ALV多屏幕独立布局(含handle参数详解)

本文详细解析了SAP ABAP中如何使用REUSE_ALV_GRID_DISPLAY_LVC函数实现ALV多屏幕独立布局,重点介绍了handle参数的技术原理和实际应用。通过变式标识符和LTDX表存储机制,开发者可以确保不同ALV报表屏幕的布局设置互不干扰,提升复杂报表场景下的用户体验。

weixin_29268267的博客 310

关于git

二、Git版本控制工具 为什么要使用版本控制工具?【了解】 在公司中开发项目时通常是多人协同开发,经常会出现代码文件相互被覆盖、代码不同步、同一个文件在电脑中存在多份等情况,如果使用版本控制工具则上面这些问题都会被解决。 2.1 版本的概念 (1)初指一种书籍经过多次传抄而形成的各种不同本子。随着时代的发展,版本也开始应用于软件上。 (2)软件版本编号制定是指为软件设置版本号码的方式。通常,版本号码会以数字订定。如:CTS3.3.5、QQ 2021 Beta 各版本的时间轴演变,每一次版...

ILove_bugs的博客 314

LPDDR5/5X BG mode,8B mode和16B mode

LPDDR5/5X 器件,协议上支持多个bank架构可静态配置;配置在MR3:模式说明协议要求速率要求BLBG模式每CH 4BG, 4BALPDDR5/5X>3200MbpsBL16 & 328B模式每CH 8BALPDDR5任何速率BL3216B模式每CH 16BALPDDR5/5X<=3200MbpsBL16 & 32。

hemlok的博客 8864

STM32外部中断与事件机制深度解析:从硬件触发到软件响应

本文深入解析STM32外部中断与事件机制,从硬件触发到软件响应的完整流程。通过对比中断和事件的应用场景、响应速度及配置方法,帮助开发者优化嵌入式系统设计,特别适合需要低功耗或高实时性的项目。

weixin_29175469的博客 410

git 命令写成脚本_用shell脚本封装git命令提高你的工作效率

0.前言工作中我们使用git提交代码,但是经常使用的几个命令不免有点麻烦,而且每次都这么提交有点啰嗦和浪费时间。本文将教你如何通过shell脚本封装git命令,一个命令解决git代码提交问题。1.原理由于git是可以使用shell基本命令的,那么我们可以将git常用的操作(如git pull ,git add,git status,git commit -m "",git push)封装成shel...

weixin_33463850的博客 871

【2025CVPR】基于脉冲神经网络的能效目标检测模型:Multi-scale Spiking Detector(MSD)深度解析

本文提出了一种创新的多尺度脉冲神经网络目标检测器(MSD),通过生物启发的ONNB模块和MSDF框架实现了高效准确的目标检测。该模型采用端到端直接训练策略,在COCO数据集上达到62.0%mAP的精度,同时仅需7.8M参数和6.43mJ能耗,较传统方法提升2.8%精度并降低82.9%能耗。实验验证了其在小目标检测和事件数据处理的优越性,为边缘计算应用提供了新范式。

hasakie的博客 1109

uibot在子程序执行js失败_使用 Node.js 将珍藏的 bash 脚本封装成命令行工具

阐述如何将一个常用的 bash 脚本融入 npm 生态之中,此处以最近遇到的一个 CR 提交脚本为例。背景作为程序猿,大家或多或少地都用过 GitHub 上的 merge request 功能。当然,除了这类 Code Review 方式,不少公司都有自己的 Code Review 平台,我司也不例外,我们使用了类似 Gerrit 的工具,此处我们暂且以 Gerrit 指代。由于最近在治理工程时,...

weixin_36402316的博客 371

Agentic AI应用架构师如何提升AI应用的灵活性

可扩展性(Scalability):快速添加新功能或扩展任务范围(如Agent从“客服”扩展到“供应链管理”);可修改性(Modifiability):调整Agent的决策逻辑或动作策略,无需重构整个系统;鲁棒性(Robustness):在环境异常或数据噪声下保持性能稳定;自适应(Self-Adaptation):自主学习新场景,无需人工干预。状态空间(S):Agent能感知的所有内部/外部状态(如用户需求、环境数据);动作空间(A):Agent能执行的所有动作(如调用工具、发送消息);

项目管理的博客 584

【网络安全】浅谈数据库攻击复现及相关安全优化

4、准备数据库服务器为了安全正式环境应该把数据库单独放一台服务器,只允许让应用服务器 IP 来访问数据库服务器,通过独立两者,就算其中一台发生问题,另一台也是好的,进一步降低了危险性。5、定时备份数据库开发定时备份功能,可以使用 Crontab,或者其他框架,设定周期备份数据,哪怕是数据丢失或被删除也可以快速恢复。

2401_88545587的博客 221

Simple-git完全指南:如何在Node.js中轻松运行Git命令

Simple-git是一个轻量级的Node.js接口,专为在任何Node.js应用程序中运行Git命令而设计。本文将为你提供一份全面的指南,帮助你快速掌握Simple-git的使用方法,让你在Node.js项目中轻松集成Git功能。 ## 快速安装Simple-git的步骤 要开始使用Simple-git,首先需要进行安装。你可以通过npm或yarn这两种常用的包管理工具来安装Simple-g

gitblog_00125的博客 901

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

nodejs在Windows下执行shell脚本

Windows自动执行shell脚本

小朱的专栏 7727

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

从0开始手搓openclaw自启动神器

一键运行openclaw的脚本代码!

2302_79237935的博客 471

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Windows 11下用gemini-cli实现AI编程:从安装到实战案例全流程

本文详细介绍了在Windows 11系统上部署和使用Google的gemini-cli命令行工具,实现免费AI编程辅助的全流程。内容涵盖Node.js环境配置、OAuth身份认证、核心命令操作,并通过实战案例展示其在代码生成、调试分析和方案设计中的高效应用,帮助开发者重构编程工作流。

stone的博客 273

基于TypeScript的Jenkins CLI工具:提升CI/CD自动化效率

在持续集成与持续部署(CI/CD)领域,命令行工具是提升自动化效率的关键。通过封装复杂的API调用,命令行工具能够将繁琐的Web界面操作转化为简洁的终端指令,实现快速查询、任务触发与日志监控。这种技术方案的核心价值在于简化DevOps工作流,降低人工干预成本,并支持与现有工具链无缝集成。在实际应用场景中,开发者可以通过命令行直接管理Jenkins任务,例如触发构建、查看队列状态或实时输出日志,从而显著提升日常工作效率。本文聚焦于一个基于TypeScript开发的Jenkins CLI工具,它利用现代技术栈如

weixin_30642869的博客 441

告别手动统计!用这行命令一键获取Vue项目的代码总量(支持HTML/CSS/JS/Vue)

本文介绍了一行终端命令,帮助Vue项目开发者快速、精准地统计HTML、CSS、JavaScript及Vue单文件组件的代码总量。该方法利用find与wc命令组合,无需复杂工具,即可一键获取项目代码行数,有效提升开发效率与项目量化管理能力。

white的博客 169

使用 simple-git 在 Node.js 中高效调用 Git 命令

近期在一个项目里面,我觉得其实可以基于 simple-git 在 cli 代码提交的时候跟 gpt 进行结合,再合并分支的时候通过大模型进行审核和优化建议,如果再牛逼一点其实可以直接去操作代码进行修改,主要灵感来自同事聊天,去年跟同事合作的过程中发现他在用 node+ gtp 大模型对代码的提交进行代码审核原文:https://juejin.cn/post/7486670839922819124。

qq_66118130的博客 1362

【小工具】如何用百度翻译api实现一个翻译脚本

前言 日常打代码的过程当中难免会需要查看日志、查看异常。像我英语不太好的时候看着就会非常头疼。每次要么开一个有道翻译在旁边,要么在谷歌翻译的网页版里面翻。 有道一直开着的话桌面未免过于杂乱,而如果要点击到网页去翻译,又有点耗时。对此我利用百度的api实现了一个小的翻译脚本软件来做这个事情,通过他,你的翻译工作就变成了这样的体验。 好处就是,你可以直接在编辑器如vscode的终端下面直接进行翻译。...

wojiaolalala的博客 1562

Giddy:Git的友好命令行封装

Giddy:Git的友好命令行封装 Giddy 是一个用 JavaScript 编写的命令行工具,它为 Git 提供了一个更加友好和直观的封装。该项目旨在改善开发者在使用 Git 时的用户体验,特别是针对一些常见的 Git 操作困难和误区。 1. 项目基础介绍和主要编程语言 Giddy 是一个开源项目,托管在 GitHub 上。项目主要使用 JavaScript 编程语言开发,依赖于 Node.j...

gitblog_00588的博客 913

js执行shell命令的几种方式(Node)

在做一个客户端基建项目的时候,多处需要用到JS调取命令行执行shell脚本,这里对shell命令、JS执行shell命令做一个简单的介绍和总结。 前言 一般在纯前端静态页面的项目中,是不需要JS调命令行操作的,通常在Node项目,或者在Electron客户端项目中,可能会有这样的需求。(electron这个客户端框架本身就内置了node的很多方法)。因此下文针对的是有node层的项目如何执行shell。 先来了解一下shell是什么? Linux/Unix中的shell,翻译是’壳’的意思;shell.

cindy647的博客 4万+
上一篇: 前端实现简单的搜索功能
下一篇: webpack通过hash控制文件缓存
一号小白
博客等级 码龄9年 13粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值