Git钩子更新包json版本

时间:2016-03-25 05:33:01

标签: github githooks github-for-windows

在我们的项目中,我们经常忘记更新Package.json文件中的版本号。我们是一个AngularJS项目。在我们的包JSON文件中,我们指定了以下两个版本信息

"version": "1.0.7",
"devVersion": "1.0.4"

在合并分支开发之前我想要一个自动脚本来更新以上两个版本号。我在想Git Hooks会帮助我。

在哪里可以找到钩子,我能够在.git文件夹下的本地仓库中看到钩子。我很困惑使用哪个钩子。在Google上搜索建议我必须在服务器上创建钩子。

我在哪里可以找到它们,我可以更新上述两个键(版本和devVersion)吗?

请提示位置和挂钩使用,这样会解决很多问题。

3 个答案:

答案 0 :(得分:4)

你有两种钩子(都存在于任何.git / hooks文件夹中):服务器和客户端钩子。
它们列在" Customizing Git - Git Hooks"

合并是一个本地操作,所以如果你想在合并过程中自动化任何进程,你需要一个客户端钩子,比如post-commit钩子(意思是创建后执行)合并提交) 如果您需要在合并之前更新该文件,您可以尝试pre-commit挂钩和check if a merge is in progress(如果不是,您的pre-commit挂钩将不执行任何操作您希望仅在合并之前更新版本。

您可以在this answer中看到生成version.json文件的post-commit hook示例。
如果是在节点中编写的,但你可以编写一个你想要的任何脚本语言。

答案 1 :(得分:2)

我正在使用huskygit-branch-is

which openssl

详细了解npm version

Webpack或Vue.js

如果您使用的是webpack或Vue.js,则可以使用Auto inject version - Webpack plugin

在用户界面中显示此内容

NUXT

"scripts": { ... "postmerge": "(git-branch-is master && npm version minor || (git-branch-is dev && npm --no-git-tag-version version patch)", ... }, 中:

nuxt.config.js

在您的var WebpackAutoInject = require('webpack-auto-inject-version'); module.exports = { build: { plugins: [ new WebpackAutoInject({ // options // example: components: { InjectAsComment: false }, }), ] }, } 中,例如在页脚中:

template

答案 2 :(得分:2)

使用Husky,非常简单:

{
  "name": "demo-project",
  "version": "0.0.3",
  "husky": {
    "hooks": {
      "pre-commit": "npm --no-git-tag-version version patch && git add ."
    }
  }
}

注意:我将git add .放在最后,因为更新软件包版本后,我们需要暂存它