最近業務でgulpを使う機会があったので、プライベートでも触ってみて、まとめました。
gulpとは
gulpとは、JavaScript・CSS管理におけるタスクランナーツールと呼ばれるものです。
作成したJS・CSSを、minifyしたり、多環境対応したり、といった具合に使います。
似たような用途でwebpackなどもありますが、こちらはbundle(複数のファイルを1つにまとめる)することが主目的で、JS modulesが当たり前な現代では採用されがちです。
今回は、JS modulesがまだ適用されていなかったため、gulp採用となりました。
gulpfile
完成したgulpfileがこちらです。
https://github.com/nek0meshi/frontend-learn/blob/master/gulp/gulpfile.js
作成したJSとCSSに対して、いろいろな処理をして本番環境用のビルドを行います。
下記のコマンドを実行することで動作を確認できます。
cd gulp # ライブラリのダウンロード npm i # gulpの実行 npm run gulp # JSのみ、gulpの実行 npm run gulp scripts # CSSのみ、gulpの実行 npm run gulp styles # watch(ファイル更新を監視し、自動実行) npm run gulp watch
browserslist
ブラウザの対応範囲を指定します。
https://github.com/nek0meshi/frontend-learn/blob/master/gulp/.browserslistrc
後述のbabelやautoprefixerと組み合わせて使います。
autoprefixer
autoprefixer
ベンダープレフィックスについて
babel
babelとは、JSをより古いバージョンの実装に書き換えることで、幅広いブラウザで動作させるような仕組みです。
sass
sassは、CSSをより簡単に記述する仕組みです。
よりCSSライクなSCSSと、より簡易に記述できるSassが存在します。
今回は、Sassで動作を試しました。
https://github.com/nek0meshi/frontend-learn/blob/master/gulp/src/index.sass
minify
minifyとは、改行・スペースやコメントなどを削除することで、ファイルサイズを削減する仕組みです。
JSではuglify、CSSではclean-cssを使っています。
https://www.npmjs.com/package/uglify-js
https://github.com/clean-css/clean-css
まとめ
僕が仕事を始めた時点では既にwebpack全盛で、gulpを使う機会を逃していました。
gulpは今でも全然現役ですし、開発の歴史を知ることで現在の開発に対する理解も深まるなと感じました。
今他に気になっているものとして、laravel-mixがあります。Laravelから独立して単独で使うこともあるとか...。