@droidsolutions-oss/semantic-release-update-file

中文文档
2.0.0发布于 2026/09/30MITES Module构建来源已验证近 30 天下载 6014

语义放行插件,帮助在放行时更新文件.

中文使用文档
文档目录8 节
  1. 安装
  2. 使用量
  3. 配置选项
  4. 发展
  5. 先决条件
  6. 建立开发环境
  7. 转写
  8. 测试

语义学-释放-更新-文件

语义释放 在发布时帮助更新文件的插件 .

main semantic-release npm (scoped)

此插件有助于您在发布时更新文件, 该文件主要有助于更新 Kubernetes 显示或使用 Semantic Release 用于非节点, 如 Dotnet 或 Flustter 等其它语言的项目 .

步骤说明
verifyConditions验证插件的配置是否正确,以及所提供的文件是否可写.
prepare通过每个配置的文件更新它 .

安装

npm install -D @droidsolutions-oss/semantic-release-update-file

使用量

插件可以在 语义释放 配置文件数字 :

{
  "release": {
    "plugins": [
      "@semantic-release/commit-analyzer",
      "@semantic-release/changelog",
      "@semantic-release/release-notes-generator",
      "@semantic-release/npm",
      [
        "@droidsolutions-oss/semantic-release-update-file",
        {
          "files": [
            {
              "path": ["k8s/prod/deployment.yaml"],
              "type": "k8s",
              "image": ["my.registry.com/some/image"],
              "branches": "main"
            },
            {
              "path": ["k8s/test/deployment.yaml"],
              "type": "k8s",
              "image": ["my.registry.com/some/image"],
              "branches": ["main", "develop"]
            },
            {
              "path": ["Directory.Build.props"],
              "type": "xml",
              "replacements": [{ "key": "Version", "value": "${nextRelease.version}" }]
            },
            {
              "path": ["Dockerfile"],
              "type": "containerfile",
              "label": "version"
            }
          ]
        }
      ],
      [
        "@semantic-release/git",
        {
          "assets": [
            "package.json",
            "package-lock.json",
            "k8s/prod/deployment.yaml",
            "k8s/test/deployment.yaml",
            "CHANGELOG.md",
            "Directory.Build.props",
            "Dockerfile"
          ],
          "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
        }
      ]
    ]
  }
}

通过这个例子,将更新4个文件:

  • 在文件中 k8s/prod/deployment.yaml 图像的版本 my.registry.com/some/image 将更新为新版本的语义版。 此文件仅在发布运行的分支名称时更新 main。 。 。 .
  • 这同样适用于文件 k8s/test/deployment.yaml 但它也会在发布运行的分支名称时更新 develop。 。 。 .
  • 在 XML 文件内 Directory.Build.props 标记的值 Version 将设定为新版语义版.
  • 在那个 Dockerfile 标签的值 version 将设定为新版本.

另外,git插件配置被更新,将已修改的文件包含在承诺中(这样它们可以稍后成为用户).

您可以在插件的文件属性中指定每个要更新的文件 。 现将备选方案说明如下.

配置选项

路径

这是需要的字段, 您指定要更新的文件的路径( 相对于根工程目录) 。 这可以是一个字符串或一系列字符串,从而导致所有文件以同样的方式被更新.

类型

支持的文件类型之一 。 目前这些是 k8s 对于雅姆尔文件, flutter 用于达特 pubspec.yaml 文档, xml 用于像 Dotnet 项目文件和 XML 文件 containerfile 对于多克文件.

分支

一个过滤器,允许根据运行中的分支更改文件。 例如,您可能想要从不同的分支测试活度。 在这种情况下,您可以设置这样的文件配置 :

{
  "files": [
    {
      "path": ["k8s/prod/deployment.yaml"],
      "type": "k8s",
      "image": ["my.registry.com/some/image"],
      "branches": "main"
    },
    {
      "path": ["k8s/test/deployment.yaml"],
      "type": "k8s",
      "image": ["my.registry.com/some/image"],
      "branches": ["develop"]
    }
  ]
}

分支可以是字符串或分支的数组,如果需要更新多个分支中的文件(例如,用于从α/β/develop分支中预释).

图像

只有当类型是 k8s。指定要替换哪个版本的容器图像。 比如说,如果你 deployment.yaml 看起来像这样:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
        - image: my.registry.com/some/image:v2.8.2
          name: my-deployment

需要说明 my.registry.com/some/image 作为配置中的图像。 在语义放行完成后,图像的版本将成为新版本.

如果将容器图像作为另一个语义释放插件的一部分来构建和发布,并且你想将其部署在CI管道的后期步骤中,这非常有帮助.

说明: 该插件将更新给定的 Yaml 文件内图像的所有出错 .

准确匹配

只有当类型是 k8s。这个插件将图像标记完全替换为新版本。 如果你在标签上有一个后缀 可能会有问题 -alpine为此 exactMatch 选项。 如果您指定 exactMatch: true 只有旧版本字符串被新版本所取代.

例如,如果您的最后一个标记是 v1.0.0 的版本(没有领导 v)被新版本所取代. 这样,任何标记后缀都应该保留. 举个例子 my.registry.com/some/image:v1.0.0-alpine 将会变成 my.registry.com/some/image:v1.1.0-alpine。 。 。 .

警告: 要做到这一点,Yaml文件中的版本必须与确定为旧版本的Semantic Release相匹配,即Git标签,除非它是第一次发布.

替换

只有在类型是 xml。您可以指定 XML 文件需要更新的密钥/值对数组。 您可以以此为例, 更新版本, 并在 C# 项目文件中为 NuGet 软件包承诺标签 。 例如,考虑以下.csproj文件:

<Project>
  <PropertyGroup>
    <VersionPrefix>1.0.0</VersionPrefix>
    <Authors>Stefan Ißmer</Authors>
    <Company>DroidSolutions GmbH</Company>
    <Description>Awesome description of awesome NuGet package.</Description>
    <RepositoryUrl>[email protected]</RepositoryUrl>
    <RepositoryBranch>main</RepositoryBranch>
    <RepositoryCommit>2e5a8557392548f0c7463a102efdb0add0ee5aab</RepositoryCommit>
  </PropertyGroup>
</Project>

使用以下配置语义发布会更新版本Prefix和 Repository Commit字段:

{
  "files": [
    {
      "path": ["path/to/my.csproj"],
      "type": "xml",
      "replacements": [
        { "key": "VersionPrefix", "value": "${nextRelease.version}" },
        { "key": "RepositoryCommit", "value": "${nextRelease.gitHead}" }
      ]
    }
  ]
}

现在版本Prefix更新了(您可以在后期的Semantic Release步骤中创建一个带有版本在文件中的NuGet软件包),Repository Commit会指向触发发布的承诺.

密钥必须是您给出文件中有效的 XML 标记 。 如果不存在错误,则会记录到错误,但语义释放的执行会继续下去. 值既可以是固定值,也可以是通过模板函数提取的语义放出上下文中的任何对象. 包括上一期和新版的信息,以及你自己设定的环境变量。 更多信息见 文件。 。 。 .

标签

当指定容器文件( 如 Dockerfiles) 时, 您可以在文件内指定一个标签, 在语义发布时应该随程序更新 。 例如,如果您在您的容器文件上添加一个标签,那么您可以用这个插件来更新应用程序版本.

发展

要开始阅读 捐款准则 首先,确保您设置了先决条件,然后遵循以下步骤来设置您的环境.

先决条件

这个项目需要 节点JS 安装在您的机器上.

建立开发环境

  • 使用 git 复制此重播
  • 运行 npm install 以获取所有依赖
  • 运行 npx husky install 来搭起钩子

转写

由于这个项目是写在 类型脚本 您需要将其移植到 JavaScript 文件 。 这个可以用 npm run build 命令.

测试

测试也用 TypeScript 写入和使用 摩诃迦叶 作为试跑者和 Chai 断言图书馆。如果您添加了新功能,请同时添加单元测试,以确保该功能正常工作.

版本与发布记录

@droidsolutions-oss/semantic-release-update-file 共发布 10 个版本,首次发布于 2021/05/18;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.0latest2026/09/301 个月前
1.4.02024/03/112 年前
1.4.0-beta.1beta2024/03/052 年前
1.3.22023/06/053 年前
1.3.12023/03/083 年前
1.3.02023/02/173 年前

关于 @droidsolutions-oss/semantic-release-update-file 的常见问题

@droidsolutions-oss/semantic-release-update-file 是什么?

语义放行插件,帮助在放行时更新文件.

如何安装 @droidsolutions-oss/semantic-release-update-file?

在项目目录运行 npm install @droidsolutions-oss/semantic-release-update-file,或使用 pnpm add / yarn add / bun add。

@droidsolutions-oss/semantic-release-update-file 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/droidsolutions-oss__semantic-release-update-file 是否存在。

@droidsolutions-oss/semantic-release-update-file 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@droidsolutions-oss/semantic-release-update-file 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.14.0 || >= 24.10.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@droidsolutions-oss/semantic-release-update-file 可以商用吗?

@droidsolutions-oss/semantic-release-update-file 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@droidsolutions-oss/semantic-release-update-file 的下载量有多少?

根据 npm 官方下载统计,@droidsolutions-oss/semantic-release-update-file 在 2026/10/13 – 2026/11/11 这 30 天内被下载 6,014 次,日均约 200 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@droidsolutions-oss/semantic-release-update-file 还在维护吗?

最新版本 2.0.0 发布于 2026/09/30(1 个月前);至今共发布 10 个版本,其中过去 12 个月发布了 1 个;首次发布于 2021/05/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。