如何在npm版本命令后自动将标签推送到git?

时间:2016-01-26 14:42:21

标签: shell npm

npm version

  

在包目录中运行此命令以阻止版本并将新数据写回package.json [..]如果在git repo中运行,它还将创建版本提交和标记。

如何配置npm / wrap npm version命令以自动将标签推送到git ?,即相当于:

npm version patch
+ foo@3.0.1
git push origin v3.0.1

NPM文档建议在prackage.json中添加postversion script,例如

"scripts": {
    "postversion": "git push && git push --tags && rm -rf build/temp"
}

但是,此建议仅适用于单个包,因为它同步所有标记,而不仅仅是最后创建的标记。

1 个答案:

答案 0 :(得分:1)

假设新标签是当前版本中唯一可能有用的标签。

$ npm version patch
$ tag=$(git tag --points-at HEAD)
$ git push origin "$tag"

否则,您可以尝试捕获(并解析)npm version patch的输出(假设输出始终为+ foo@3.0.1且标记始终为v<part after @)。

$ tag=$(npm version patch 2>&1)
$ tag=v${tag#*@}
$ git push origin "$tag"

您还可以尝试在npm version patch调用之前抓取可用标记,然后针对可用标记对该列表进行区分,之后应找到新标记并推送它。