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版本的主要内容,如果未能解决你的问题,请参考以下文章
依赖包版本号更新 warning package.json: “dependencies“ has dependency “eslint“ with range “^6.8.0“