是否存在检测JS代码变更的事件以自动更新版本号?
自动检测JS代码变更并更新版本号的方案
前端构建工具(首推)
主流构建工具自带文件哈希与版本管理能力,完全不用手动维护版本号:- Webpack:在配置文件的
output字段中给文件名加上[contenthash],示例:
代码变更后,打包会生成带全新哈希值的文件,相当于自动更新了版本标识。如果需要同步更新module.exports = { output: { filename: 'bundle.[contenthash].js' } };package.json的version字段,可搭配webpack-shell-plugin-next插件,在打包完成后执行自定义Node脚本递增版本号。 - Vite:默认打包会给输出文件添加哈希后缀,也可通过
build.rollupOptions.output.entryFileNames自定义命名格式;在package.json的scripts中添加命令,比如:
用简单的Node脚本读取并更新"scripts": { "build": "vite build && node update-version.js" }package.json的版本号。
- Webpack:在配置文件的
Git钩子自动更新
借助Git钩子,在代码提交时自动更新版本号:- 安装
standard-version工具:npm install standard-version --save-dev - 在
package.json中添加脚本:"release": "standard-version" - 配置pre-commit或post-commit钩子,让每次代码提交前自动运行
npm run release。工具会根据提交信息(如feat对应次版本递增、fix对应修订号递增)自动更新版本号,同时生成CHANGELOG文件。
- 安装
自定义文件监控脚本
写个Node脚本监控JS文件变化,检测到修改就自动更新版本号:const fs = require('fs'); const path = require('path'); const packagePath = path.resolve(__dirname, 'package.json'); // 获取当前版本号 function getCurrentVersion() { const pkg = JSON.parse(fs.readFileSync(packagePath, 'utf8')); return pkg.version; } // 递增修订号,可按需修改为主版本/次版本递增逻辑 function incrementVersion(version) { const [major, minor, patch] = version.split('.').map(Number); return `${major}.${minor}.${patch + 1}`; } // 监控src目录下的JS文件 fs.watch('./src', { recursive: true }, (_, filename) => { if (filename?.endsWith('.js')) { const newVersion = incrementVersion(getCurrentVersion()); const pkg = JSON.parse(fs.readFileSync(packagePath, 'utf8')); pkg.version = newVersion; fs.writeFileSync(packagePath, JSON.stringify(pkg, null, 2)); console.log(`版本号已更新为:${newVersion}`); } });将脚本保存为
watch-version.js,运行node watch-version.js即可实时监控文件变更并更新版本号。
内容的提问来源于stack exchange,提问作者Alex von B
相关产品推荐
相关产品推荐

