Git 挂钩更新包 json 版本
Git hook update package json version
在我们的项目中,我们经常忘记更新 Package.json
文件中的版本号。我们的是一个 AngularJS 项目。在我们的包 JSON 文件中,我们指定了以下两个版本信息
"version": "1.0.7",
"devVersion": "1.0.4"
在合并分支开发之前我想要一个自动脚本来更新以上两个版本号。我在想 Git Hooks 会帮助我。
我在哪里可以找到挂钩,我可以在 .git
文件夹下的本地存储库中看到这些挂钩。我很困惑要使用哪个钩子。搜索 Google 表明我必须在服务器上创建挂钩。
我在哪里可以找到它们,我可以更新上面的两个密钥(版本和 devVersion)吗?
请建议使用的位置和挂钩,这将解决很多问题。
您有两种挂钩(都存在于任何 .git/hooks 文件夹中):服务器挂钩和客户端挂钩。
它们列在“Customizing Git - Git Hooks”
合并是一个本地操作,所以如果你想在合并期间自动化任何进程,你需要一个客户端挂钩,比如 post-commit
挂钩(意思是在 创建合并提交)。
如果您需要在 合并之前 更新该文件,您可以尝试使用 pre-commit
挂钩,然后 (如果没有,您的 pre-commit
挂钩会什么都不做,因为您只想在合并之前更新版本)。
您可以在 this answer an example of a post-commit hook 中看到它生成了一个 version.json
文件。
如果是用 node 写的,但是你可以用任何你想要的脚本语言写一个钩子。
我正在使用 husky and 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>
有了Husky,就非常简单了:
{
"name": "demo-project",
"version": "0.0.3",
"husky": {
"hooks": {
"pre-commit": "npm --no-git-tag-version version patch && git add ."
}
}
}
注意:我把git add .
放在最后,因为我们更新包版本后,我们需要暂存它
在我们的项目中,我们经常忘记更新 Package.json
文件中的版本号。我们的是一个 AngularJS 项目。在我们的包 JSON 文件中,我们指定了以下两个版本信息
"version": "1.0.7",
"devVersion": "1.0.4"
在合并分支开发之前我想要一个自动脚本来更新以上两个版本号。我在想 Git Hooks 会帮助我。
我在哪里可以找到挂钩,我可以在 .git
文件夹下的本地存储库中看到这些挂钩。我很困惑要使用哪个钩子。搜索 Google 表明我必须在服务器上创建挂钩。
我在哪里可以找到它们,我可以更新上面的两个密钥(版本和 devVersion)吗?
请建议使用的位置和挂钩,这将解决很多问题。
您有两种挂钩(都存在于任何 .git/hooks 文件夹中):服务器挂钩和客户端挂钩。
它们列在“Customizing Git - Git Hooks”
合并是一个本地操作,所以如果你想在合并期间自动化任何进程,你需要一个客户端挂钩,比如 post-commit
挂钩(意思是在 创建合并提交)。
如果您需要在 合并之前 更新该文件,您可以尝试使用 pre-commit
挂钩,然后 pre-commit
挂钩会什么都不做,因为您只想在合并之前更新版本)。
您可以在 this answer an example of a post-commit hook 中看到它生成了一个 version.json
文件。
如果是用 node 写的,但是你可以用任何你想要的脚本语言写一个钩子。
我正在使用 husky and 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>
有了Husky,就非常简单了:
{
"name": "demo-project",
"version": "0.0.3",
"husky": {
"hooks": {
"pre-commit": "npm --no-git-tag-version version patch && git add ."
}
}
}
注意:我把git add .
放在最后,因为我们更新包版本后,我们需要暂存它