2013-04-08 31 views
8

有没有办法使用git的HEAD哈希来自动更新package.json的版本号(https://npmjs.org/doc/json.html)?我想在项目的package.json文件中有类似version: 1.0.0+rev82e4b91cfe42cd86e9453b4987b9cc446566de6的东西。在plus之前的东西是手动设置的,并且每次我提交一些东西时都会更新哈希。如何将Git哈希写入(node's)package.json?

这可能吗?我无法找到有关这个主题的东西: - 在什么时候/

回答

-2

自动?可能性是:每次你从一台机器环境中的每个运行任何编译时间

  • 更新版本字段运行构建时间

    1. 更新版本字段。
    2. 更新git钩子中的版本字段以保持同步。就我个人而言,当一些事情发生变化时,我会对一个会执行更改的钩子感到紧张。这个策略是最高风险,最高奖励。

    如果使用第一种或第二种方法,它当然取决于您使用的构建工具。如果您使用grunt,请查看关于grunt插件的信息。我无法找到任何你想要的grunt插件,但你可以很容易地创建一个插件。

    http://gruntjs.com/plugins

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

    就我而言,我使用SVN的,但希望同样的模式。我想将SVN修订版号码作为我的内部版本号。

    我的建议是将内部版本号保留在检入的文件中,让您的构建环境为新构建做一个git克隆并更新构建编号。然后,构建的包总是有一些关于它们表明它们来自的git commit。

    我认为,对于发展,你并不真的需要它,因为你总是可以问的是哪个版本已签出饭桶。有一个grunt-git插件,你可以用它来找出dev中的版本。 (可能是git show?)

  • +0

    我刚发现git describe。它也可能有用。它为您提供缩写sha1提交ID和自最近标记以来的提交计数。 https://www.kernel.org/pub/software/scm/git/docs/git-describe.html – Brandon 2013-04-08 14:44:23

    +0

    为什么downvote? – Brandon 2015-10-09 23:43:45

    1

    部分问题可以用git-describe来解决,其实有一个可以为你打包的grunt插件(https://github.com/mikaelkaron/grunt-git-describe/)。你需要手动进行第二部分(现在),但实际上我现在有类似的问题,所以我可以尝试为你(和我自己)修改一个grunt插件。

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

    +2

    这感觉就像是插件的广告,而不是答案;为了让它成为答案,你应该在你的答案中展示你如何实现你的插件来解决用户的实际问题。 – 2015-06-03 20:36:43

    1

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

    有许多git rev-xxx命令,可能是你可能要记录任何附加的东西是有用的。

    1

    看来,这可以直接完成,无需插件。 npm version $(git describe)将取值为git describe并更新package.json中的版本值。

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