やっぱりどう考えてもQiitaが日本で一番好き。tattです。
昨今のwebのモダンな開発環境では、タスクランナーにgulp、バージョン管理にGitを導入されて、ワンチャン狙ってる方も多いかと思います。
gulp.watchの甘い誘惑に見事に引っかかってしまったので、甘い言葉にはもうだまされないぞ!
「gulpとGitを併用するプロジェクトで気をつけたいこと -2016 夏の面影-」、tatt開催しまーす!!!
環境
OSX 10.10.5
Git 2.9.3
gulp 3.9.1
gulp.watchの甘い誘惑
タスクランナーでgulpを導入されてる方のほとんどは、このタスクを使ってるケースが多いのではないでしょうか。
sass→cssのコンパイル、JavaScriptのバンドル、BrowserSyncなどをファイル変更をwatch
させて自動で変更差分をブラウザに反映させてたりしますよね。
このファイル変更をwatch
、いいですよね!
ですが、watchタスクを止めずに$ git checkout branch_name
で別ブランチにcheckoutするとどうでしょうか。
はい、branch_name
配下のファイルがwatchされてしまい、さっきまでのブランチとの差分があった場合、したくもないコンパイルが走りますよね。
$ git checkout file_name
で戻せますが、面倒ですよね。
ブランチの切替時にgulpをstopさせる
単純に、$ git checkout branch_name
前にgulpタスクをstopさせれば良い。
ヒューマンエラーは防げない
ターミナルやitermなどでgulpのタスク実行とは別のタブでgitコマンドを実行させてしまった…など、ヒューマンエラーは防止が難しいケースがあるかと思います。
シェルスクリプトの関数を利用する
お使いの.bash_profile
や.bashrc
、.zshrc
などに
# gulpをとめてからgit checkoutする
function gcheckout () {
killall gulp && git checkout $1
}
としておけば、
$ gcheckout branch_name
これで、gulpタスクをstopさせた後にブランチ切り替えができます。
新規ブランチ作成への応用
# gulpをstopしてから(新規ブランチ)にgit checkoutする
function gnewbranch () {
killall gulp && git checkout -b $1
}
としておけば、
$ gnewbranch branch_name
これで、gulpタスクをstopさせた後に新規ブランチを作成し切り替えます。
まさかり募集
もっと良い方法をご存知であればお願いします。。