スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

gulpの学習

最近業務でgulpを使う機会があったので、プライベートでも触ってみて、まとめました。

gulpとは

gulpjs.com

gulpとは、JavaScriptCSS管理におけるタスクランナーツールと呼ばれるものです。

作成した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

CSSのベンダープレフィックスを自動作成するツールです。

autoprefixer

github.com

ベンダープレフィックスについて

developer.mozilla.org

babel

babelとは、JSをより古いバージョンの実装に書き換えることで、幅広いブラウザで動作させるような仕組みです。

babeljs.io

sass

sassは、CSSをより簡単に記述する仕組みです。

よりCSSライクなSCSSと、より簡易に記述できるSassが存在します。

sass-lang.com

今回は、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から独立して単独で使うこともあるとか...。