Git钩子更新包json版本

use*_*401 14 github githooks github-for-windows

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

"version": "1.0.7",
"devVersion": "1.0.4"
Run Code Online (Sandbox Code Playgroud)

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

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

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

请提示使用位置和挂钩,这样可以解决很多问题.

Ani*_*t3d 10

我正在使用huskygit-branch-is

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

阅读有关npm 版本的更多信息

Webpack 或 Vue.js

如果您使用的是 webpack 或 Vue.js,您可以使用自动注入版本 - Webpack 插件在 UI 中显示它

NUXT

nuxt.config.js

var WebpackAutoInject = require('webpack-auto-inject-version');

module.exports = {
  build: {
    plugins: [
      new WebpackAutoInject({
        // options
        // example:
        components: {
          InjectAsComment: false
        },
      }),
    ]
  },
}
Run Code Online (Sandbox Code Playgroud)

在您template的例如页脚中:

<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 5

您有两种挂钩(都存在于任何.git / hooks文件夹中):服务器和客户端挂钩。
它们在“ 自定义Git-Git挂钩 ” 中列出

合并是一项本地操作,因此,如果您想在合并期间自动执行任何进程,则需要一个客户端挂钩,例如post-commit挂钩(意味着创建合并提交后立即执行)。
如果您需要合并之前更新该文件,则可以尝试执行pre-commit钩子,并检查合并是否正在进行(如果没有,则pre-commit钩子什么都不做,因为您只想在合并之前更新版本)。

您可以在此答案中看到生成文件的提交后挂钩的示例version.json
如果是在节点中编写的,但是您可以在任何所需的脚本语言中编写钩子。


Duc*_*Mai 5

对于Husky来说,这非常简单:

{
  "name": "demo-project",
  "version": "0.0.3",
  "husky": {
    "hooks": {
      "pre-commit": "npm --no-git-tag-version version patch && git add ."
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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