2013-04-08 71 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。)