You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:32:17