gitの操作をgulpで行うにはgulp-gitを使えばいいのだけど、commit messageを都度入力したい時には自前で書く必要がある。
gulpでコマンドライン引数を受けとれるようにするにはminimistを使う。
インストール
npm install gulp-git --save-dev
npm install minimist --save-dev
gulpfile.js
var gulp = require('gulp');
var git = require('gulp-git');
var minimist = require('minimist');
// parse command line argument
var argv = minimist(process.argv.slice(2));
// git manipulation
gulp.task('push', function(){
return gulp.src('.')
.pipe(git.add())
.pipe(git.commit(argv['m']))
.pipe(git.push('origin','master', function(err){
if (err) throw err;
}));
});
コマンド
gulp push -m "コミットメッセージ"
解説
minimist(process.argv.slice(2));
process.argv
nodeの用意しているプロパティ。文字列の配列。
slice(2)
配列の2番目を取り出す。
0番目にはNodeの実行ファイル、1番目には自分の作ったjsファイルが格納されているので、
gulp push "コミットメッセージ"
というコマンドは
(0)gulp (1)push (2)"コミットメッセージ"
と見ることができる。
minimistとは
本来、gulpでは引数を渡すことはできない。それを可能にするのがminimistである。
前述の「process.argv」でコマンドライン引数を受けとって、それをgulpで使えるカタチにパースしてくれるのだそうな。
var args = minimist(process.argv.slice(2));
これまでの解説を要約すると、上記のコードは__コマンドライン引数をargsという配列に格納している__ってことになる。
引数の呼び出し方
コマンドライン上で-m "メッセージ"
とした場合はargs['m']
で呼び出せる。
冒頭のgulpfile.jsのように
.pipe(git.commit(argv['m']))
とすれば好きに呼び出すことができる。