如何将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。)

自动在什么时候? 可能性是:

  1. 每次从机器环境运行构build时更新版本字段
  2. 每次运行任何构build时更新版本字段。
  3. 更新git钩子中的版本字段以保持同步。 就我个人而言,当一些事情发生变化的时候,我会为一个钩子而感到紧张。 这个策略是风险最高,奖励最高的。

如果你使用第一种或第二种方法,那当然取决于你使用的构build工具。 如果你使用咕噜声,请参阅一个咕噜声插件。 我无法find任何你想要的grunt插件,但你可以很容易地创build一个插件。

http://gruntjs.com/plugins

如果你最终创build一个,让我知道,因为我也需要一个类似的过程:)

在我的情况下,我使用SVN,但想要相同的模式。 我想把SVN修订号码作为我的内部版本号。

我的build议是把内部版本号保留在检入的文件中,并让你的构build环境为新构build做一个git克隆,并更新内部版本号。 然后构build的包总是有一些关于他们表明他们来自的git提交。

我认为,对于开发,你并不需要它,因为你总是可以问git你签出了哪个版本。 有一个grunt-git插件,你可以用它来找出dev中的版本。 (也许git显示?)