git hook更新包json版本

Posted

技术标签:

【中文标题】git hook更新包json版本【英文标题】:Git hook update package json version 【发布时间】:2016-07-12 21:26:36 【问题描述】:

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

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

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

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

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

请建议使用位置和挂钩,这将解决很多问题。

【问题讨论】:

与***.com/questions/13059991/…和***.com/questions/25796533/…相关 【参考方案1】:

我正在使用husky 和git-branch-is:

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

阅读更多关于npm version

Webpack 或 Vue.js

如果您使用的是 webpack 或 Vue.js,您可以使用 Auto inject version - Webpack plugin 在 UI 中显示它

NUXT

nuxt.config.js:

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

module.exports = 
  build: 
    plugins: [
      new WebpackAutoInject(
        // options
        // example:
        components: 
          InjectAsComment: false
        ,
      ),
    ]
  ,

在您的template 中,例如在页脚中:

<p> All rights reserved © 2018 [v[AIV]version[/AIV]]</p>

【讨论】:

有趣的实现,比我的回答更精确。 +1【参考方案2】:

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

合并是一种本地操作,因此如果您想在合并期间自动执行任何流程,则需要一个客户端挂钩,例如 post-commit 挂钩(意思是在创建合并之后执行提交)。 如果您需要在合并之前更新该文件,您可以尝试使用pre-commit 挂钩和check if a merge is in progress(如果没有,您的pre-commit 挂钩将不会执行任何操作,因为您想更新版本仅在合并之前)。

您可以在this answer 中看到post-commit hook 的示例,该示例会生成version.json 文件。 if是用node写的,但是你可以写一个你想要的任何脚本语言的钩子。

【讨论】:

【参考方案3】:

使用Husky,非常简单:


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

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

【讨论】:

我应该在什么文件中添加这个?

以上是关于git hook更新包json版本的主要内容,如果未能解决你的问题,请参考以下文章

怎么用git更新bae上的代码?

依赖包版本号更新 warning package.json: “dependencies“ has dependency “eslint“ with range “^6.8.0“

npm - Semver 版本控制 - 使用插入符号“^”更新包

为啥更新包时“composer.json”没有更新?

Linux 安装 Git

git自动更新网站代码