如何将Git哈希写入(node's)package.json?
有没有办法使用git的HEAD哈希自动更新package.json( https://npmjs.org/doc/json.html )的版本号? 我想在项目的package.json文件里有类似version: 1.0.0+rev82e4b91cfe42cd86e9453b4987b9cc446566de6
东西。 EVE之前的加号手动设置和散列更新每次我提交的东西。
这可能吗? 我找不到这个话题:/
其中一部分可以用git-describe
来解决,而且实际上有一个grunt插件为你封装( https://github.com/mikaelkaron/grunt-git-describe/ )。
第二部分,你必须手动(现在),但我现在有一个类似的问题,所以我可以尝试为你(和我)破解一个grunt插件。
充分的披露,我是上面的grunt-git-describe
的作者。
git rev-parse HEAD
将写出最后一个提交到当前的头分支,然后你可以追加到你的包中的版本号,每当你运行你的构build。
有一些git rev-xxx
命令可能对你想要logging的其他东西有用。
看来,这可以直接完成,没有插件。 npm version $(git describe)
将从npm version $(git describe)
获取值并在package.json中更新版本的值。
(我目前使用npm版本3.10。)
自动在什么时候? 可能性是:
- 每次从机器环境运行构build时更新版本字段
- 每次运行任何构build时更新版本字段。
- 更新git钩子中的版本字段以保持同步。 就我个人而言,当一些事情发生变化的时候,我会为一个钩子而感到紧张。 这个策略是风险最高,奖励最高的。
如果你使用第一种或第二种方法,那当然取决于你使用的构build工具。 如果你使用咕噜声,请参阅一个咕噜声插件。 我无法find任何你想要的grunt插件,但你可以很容易地创build一个插件。
如果你最终创build一个,让我知道,因为我也需要一个类似的过程:)
在我的情况下,我使用SVN,但想要相同的模式。 我想把SVN修订号码作为我的内部版本号。
我的build议是把内部版本号保留在检入的文件中,并让你的构build环境为新构build做一个git克隆,并更新内部版本号。 然后构build的包总是有一些关于他们表明他们来自的git提交。
我认为,对于开发,你并不需要它,因为你总是可以问git你签出了哪个版本。 有一个grunt-git插件,你可以用它来找出dev中的版本。 (也许git显示?)