如何将package.json版本同步至非JSON格式的properties文件
解决Angular构建中同步package.json版本到properties文件的方案
实现方案(原生Node.js,无额外依赖)
直接用Node.js编写脚本,利用原生API完成版本提取与替换,无需额外安装工具,适配所有CI/CD环境。
1. 创建同步脚本
在项目根目录新建sync-version.js文件,写入以下代码:
const fs = require('fs').promises; const path = require('path'); async function syncVersion() { // 读取package.json获取版本号 const pkgContent = await fs.readFile(path.join(__dirname, 'package.json'), 'utf8'); const appVersion = JSON.parse(pkgContent).version; // 读取并修改properties文件 const propsPath = path.join(__dirname, 'app-infos.properties'); let propsContent = await fs.readFile(propsPath, 'utf8'); // 精准替换project.version属性 const versionPattern = /^project\.version=.*$/m; propsContent = propsContent.replace(versionPattern, `project.version=${appVersion}`); // 写回文件 await fs.writeFile(propsPath, propsContent, 'utf8'); console.log(`版本同步完成:project.version=${appVersion}`); } // 执行并处理异常 syncVersion().catch(err => { console.error('版本同步失败:', err.message); process.exit(1); });
2. 集成到构建流程
修改package.json的scripts字段,把同步命令加入构建前置步骤:
{ "scripts": { "sync-version": "node sync-version.js", "build": "npm run sync-version && ng build" } }
3. 验证与使用
- 手动验证:运行
npm run sync-version,检查app-infos.properties中project.version是否已更新为package.json的版本 - 构建自动执行:运行
npm run build,Angular构建前会自动完成版本同步
关键细节
- 依赖仅Node.js原生模块,无需额外安装任何包,适配Windows、Linux、macOS及各类CI/CD环境
- 正则表达式
/^project\.version=.*$/m确保只匹配行首的目标属性,避免误改其他相似内容 - 包含异常处理,同步失败时会终止流程并输出错误信息,方便CI/CD环境捕获问题
内容的提问来源于stack exchange,提问作者firasKoubaa
相关产品推荐
相关产品推荐

