如何将Git哈希写入(node' s)package.json?

时间:2013-04-08 14:05:48

标签: node.js package development-environment gruntjs

有没有办法用git的HEAD哈希自动更新package.json(https://npmjs.org/doc/json.html)的版本号?我想在项目的package.json文件中加入version: 1.0.0+rev82e4b91cfe42cd86e9453b4987b9cc446566de6之类的东西。在加号之前的Eveything是手动设置的,每次我提交时都会更新哈希值。

这可能吗?我在这个主题上找不到任何东西: - /

4 个答案:

答案 0 :(得分:1)

部分内容可以通过git-describe来解决,实际上有一个用于为您包装的grunt插件(https://github.com/mikaelkaron/grunt-git-describe/)。

第二部分你必须手动(现在),但我实际上有一个类似的问题,所以我可以尝试为你(和我自己)破解一个grunt插件。

完全披露,我是上述grunt-git-describe的作者。

答案 1 :(得分:1)

git rev-parse HEAD将写出当前头部分支的最后一次提交,然后您可以在运行构建时附加到包中的版本号。

有许多git rev-xxx命令可能对您可能想要记录的任何其他内容有用。

答案 2 :(得分:1)

看来这可以在没有插件的情况下直接完成。 npm version $(git describe)将从git describe获取值并更新package.json中的版本值。

(我目前正在使用npm版本3.10。)

答案 3 :(得分:-2)

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

  1. 每次从计算机环境运行构建时更新版本字段
  2. 每次运行任何版本时都更新版本字段。
  3. 更新git挂钩中的版本字段以保持同步。就个人而言,我会对一个在某些事情发生变化时进行改变的钩子感到紧张。这种策略风险最高,回报最高。
  4. 如果您采用第一种或第二种方法,当然取决于您使用的构建工具。如果你使用grunt,请参阅grunt插件。我找不到任何你要求的咕噜插件,但你可以很容易地创建一个。

    http://gruntjs.com/plugins

    如果您最终创建了一个,请告诉我,因为我也需要类似的过程:)

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

    我的建议是将内部版本号留在已签入的文件中,并让您的构建环境为新版本执行git克隆并更新内部版本号。然后构建的包总是有一些关于它们的东西,表明它们来自的git提交。

    我认为对于开发来说,你真的不需要它,因为你总是可以问git你检查过哪个版本。有一个grunt-git插件,您可以使用它来找出dev中的版本。 (也许是git show?)