获取package.json中的版本号——bat脚本

3 篇文章 0 订阅
本文介绍了如何在npm脚本中利用package.json的钩子与bat批处理文件配合,实现版本号自动更新。通过prestart、start和poststart等钩子,bat脚本可以从package.json读取version并写入到指定的version.json文件,方便在构建或启动项目时获取当前版本号。这种方法适用于前端开发,特别是webpack构建流程中。
摘要由CSDN通过智能技术生成

前言:

  • 这个方法不需要你有 bat 指令功底,能耐心看完,会拷贝代码然后代入使用即可。

首先说一下package.json的 script 中的几个钩子

scripts: 声明一系列npm脚本指令

  1. prepublish: 在包发布之前运行,也会在npm install安装到本地时运行
  2. publish,postpublish: 包被发布之后运行
  3. preinstall: 包被安装前运行
  4. install,postinstall: 包被安装后运行
  5. preuninstall,uninstall: 包被卸载前运行
  6. postuninstall: 包被卸载后运行
  7. preversion: bump包版本前运行
  8. postversion: bump包版本后运行
  9. pretest,test,posttest: 通过npm test命令运行
  10. prestop,stop,poststop: 通过npm stop命令运行
  11. prestart,start,poststart: 通过npm start命令运行
  12. prerestart,restart,postrestart: 通过npm restart运行
// 举个例子
"scripts":{
	"prestart":"prebuild.bat",
	"start":"webpack .",
	"poststart":"postbuild.bat"
}

以 start 命令为例,我们的命令都是key value 形式存放的,一般使用npm start命令时执行的是webpack .,如果我们加上代码中的两行,那么执行npm start时,流程是这样的:

  • 先执行 prestart指令,此时会对应的执行prebuild.bat文件
  • 然后执行 start 指令,此时会执行webpack .命令
  • 最后执行 poststart指令,此时会执行postbuild.bat文件

pre 意味着,在某个命令之前执行,post 则是之后,对应的可以参考我上面的钩子指令。

获取package.json中的版本号–bat脚本

文件名:prebuild.bat (自己随便取,我这里主要是为了和后面对应)。

文件路径:这个文件要和 package.json同级。

@echo off
REM 获取版本号
for /f "tokens=1,2* delims=," %%a in (package.json) do (
    echo %%a | findstr "version" >nul && echo {%%a} > "src/assets/config/version.json" || echo;
)

首先说明一下:我也不会使用bat指令,这些bat指令,是我从网上查资料,然后自己改造,最后写成的。

这几行bat指令,会读取你的package.json文件,取出 version 这一行,然后写入到路径为src/assets/config/version.jsonversion.json文件里。

如果路径下不存在version.json这个文件的话,会自动创建此文件然后在写入。

使用方法

打开package.json找到我们 打包 或 其他指令(这里以build打包指令为例):

"build":"xxxxxx"

此时我们需要在package.jsonscripts里,也就是 build 命令所在的地方,加一行:

"prebuild":"prebuild.bat"

这样,每次我们执行npm run build的时候,程序都会先走 prebuild钩子,对应的去执行 prebuild.bat文件,然后bat文件会读取出package.json里的version版本,并放入我们指定的version.json文件里。

  • 注意:这里每次写入version.json,都是覆盖写入,不是追加。

如果我们需要拿版本号的话,只需要读取我们创建的json文件即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值