gulpで引数によって処理を分けたい
例えば、引数によって開発環境ではjsをそのまま、本番環境ではminifyする。
などしたい場合。
gulplife.coffee
############ # module ############ gulp = require 'gulp' coffee = require 'gulp-coffee' # coffeescriptを書くのに必要 uglify = require 'gulp-uglify' # ファイルをminify gulpIf = require 'gulp-if' # 条件文を使えるようにする minimist = require 'minimist' # タスクに引数を渡せる ############ # path ############ paths = assets: "./src/root/assets" assets2: "../htdocs/assets" ############ # 変数 ############ # 引数をタスクに渡す knownOptions = string: 'env' default: env: process.env.NODE_ENV || '' #ここでデフォルト値を設定できる options = minimist(process.argv.slice(2), knownOptions) ############ # タスク ############ gulp.task 'coffee',()-> gulp.src paths.assets + '/js/**/*.coffee', { sourcemaps: true } .pipe coffee({ bare: true }) .pipe gulpIf(!(options.env is 'dev'), uglify()) .pipe gulp.dest(paths.assets2 + '/js')
重要なのは、「gulpIf」と「minimist」 です。
gulpIfはタスクのpipeの中で、if文が使えるというもの。
minimistは、コマンドラインを叩くときの引数をパースしてオブジェクトとして返してくれる。
引数を付け忘れる、なにも付けないとき -> minifyされる
$ gulp coffee
引数にdevをつける -> minifyされない
$ gulp coffee --env dev
引数にdev以外をつける -> minifyされる
$ gulp coffee --env production