2016-07-19 57 views
1

我一直在努力獲得的是,使用npm版本來更新package.json並創建一個標記,然後提交我的更改。這樣,我就可以通過版本,自動版本控制和提交信息來獲得標籤。npm節點自動執行Git commit +版本控制+標記

我遇到的問題是,當我使用npm版本時,它會自動執行一個標記+提交,然後如果您以前有過一些更改,則無法完成,所以對於我來說,它沒有任何意義在執行更改/實施/修復之前增加項目的版本。

然後,我遇到的另一個問題是,我首先增加了版本作爲'補丁',然後我做了一些更改,我添加了所有,我承諾,然後發佈,最後,我有2個提交, 1因爲npm版本的補丁,另一個是好的。

我在文檔here中看到有一個參數允許你禁用這個自動標記+提交,但是我真的很想在控制檯中使用一個命令來更新包控制檯並獲得版本設置爲標籤。

另一方面,我不確定這是否是我說的確有道理,因爲據我所知,當你創建一個標籤時,你可以回到你的項目中,所以我假裝如何工作像這樣如果我禁用了自動提交?

最後,我想什麼做明確的是我的目標,我真正想達到是節點的腳本處理半自動化的腳本能夠 增加項目的版本,創建標記爲新的 版本,添加所有更改,提交和推送。

注意:我不想使用gulp-git,因爲我認爲有沒有辦法處理這個問題。

不知道,如果我是不夠清楚,如果沒有,請詢​​問幫我:)

回答

0

好球員,我知道了!我在尋找的是運行一個簡單的命令,並自動執行一些無聊的任務,我們必須始終按照Git的相同順序執行任務。

所以,我在這裏做的是,首先,我運行以下命令:

$> npm run commit -- 'v.1.0.1: Fixes' 

什麼碰巧的是,我首先乾淨的文件夾/文件和我不需要/想要的,然後我運行:

$> npm version patch -no-git-tag-version --force 

該命令增加我的package.json版本,而不是提交&沒有吊牌,所以後來我添加的所有更改爲正常,那麼我承諾我的變化,並在此之後,我創建與標籤標籤:提交一飲而盡任務。

在gulp任務(附後)中,我得到包含require的包的版本並將其視爲一個對象。

"scripts": { 
    "start": "gulp start", 
    "initialize": "npm install & typings install", 
    "clean": "gulp clean:folders", 
    "commit:example": "echo 'npm run commit -- 'v.1.0.1: Fixes'", 
    "commit:patch": "npm version patch --no-git-tag-version --force", 
    "commit:minor": "npm version minor --no-git-tag-version --force", 
    "commit:major": "npm version major --no-git-tag-version --force", 
    "precommit": "npm run clean && npm run commit:patch && git add --all", 
    "postcommit": "gulp tag:commit && git push origin master && git status && gulp commit:done", 
    "commit": "git commit -m " 
}, 

,然後,我有這個在我一飲而盡文件:

///// ***** GIT ***** ///// 


gulp.task('tag:commit', function() { 
    var version = pjson.version; 
    console.log(colors.bgWhite.black.bold(' \nTagging the version ' + version + ' \n')); 
    return run('git tag ' + version).exec(); 
}); 

我不想用一口-git的,因爲我知道有一個辦法做到這一點,如果我需要合併,創建早午餐或任何,我會運行控制檯並修復它,但對於每日提交,記住標記,更新包版本,把它放在git提交是痛苦的....

我希望這是對別人有用!

乾杯,