在我们的项目中,我们经常忘记更新Package.json
文件中的版本号。我们是一个AngularJS项目。在我们的包JSON文件中,我们指定了以下两个版本信息
"version": "1.0.7",
"devVersion": "1.0.4"
在合并分支开发之前我想要一个自动脚本来更新以上两个版本号。我在想Git Hooks会帮助我。
在哪里可以找到钩子,我能够在.git
文件夹下的本地仓库中看到钩子。我很困惑使用哪个钩子。在Google上搜索建议我必须在服务器上创建钩子。
我在哪里可以找到它们,我可以更新上述两个键(版本和devVersion)吗?
请提示位置和挂钩使用,这样会解决很多问题。
答案 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)
我正在使用husky和git-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 .
放在最后,因为更新软件包版本后,我们需要暂存它