7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gulpでのgit操作 commit messageをコマンドライン引数で渡そう

Posted at

gitの操作をgulpで行うにはgulp-gitを使えばいいのだけど、commit messageを都度入力したい時には自前で書く必要がある。

gulpでコマンドライン引数を受けとれるようにするにはminimistを使う。

インストール

  1. npm install gulp-git --save-dev
  2. 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']))

とすれば好きに呼び出すことができる。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?