GulpでCSS/JavaScriptコンパイル環境を構築する ─ Windows編

いまさら感が強いんですが、世の流れ的に、フロントエンド開発ではSCSS(SASS、LESS等)、CoffeeScriptなどでCSSやJavaScriptのコーディングを効率化しつつ、同時にソースの保守管理をし易くするという開発手法がデフォルトになってきました。私はその辺の技術の取り込みがおっくうで、ついついCSSやJavaScriptを素でコーディングしてしまったりしていたのですが、最近やっている Ruby on Rails の開発でCoffeeScriptでJavaScript書いてみて、圧倒的なコード生産性の高さに、もはや今までのベタなフロントエンドコーディング手法は改めざるを得ないという境地に達しました(いやはや、ようやくですねぇ…)。
──と云うことで、早速CSS/JavaScriptのコンパイルビルドを行う環境を業務マシンであるWindowsマシンに作ってみようかと思います(WEBサービス側のCentOS(Linux)環境への導入はこちらの記事を参照)。

なお、なぜビルドツールをGruntではなくGulpにしたかというと、今どきのトレンドはGulpの方かなぁ…という漠然な理由だったりするんですが、まぁ、Gruntより設定ファイルが記述しやすく、複数リソースの設定があっても設定が煩雑化しないというメリットもあるからです。

Node.js のインストール

まずはGulpはnode.jsのモジュールなので、node.jsをインストールしないことには始まりません。そんな訳で、node.jsをインストールします。
インストールは簡単で、Node.jsの公式サイトからインストーラーをダウンロードするだけです。私の業務用マシンは「Windows7(64bit版)」だったので、node-v0.12.0-x64.msi というファイルが対象になります(2015年3月4日時点のNode.jsのバージョンは0.12.0です)。
インストーラがダウンロードできたら、早速起動させます。いくつか対話が発生しますが、特に注意しないといけないようなインストール設定はありません。
イントールが完了したら、コマンドプロンプト(もしくは、パワーシェル)から、Node.jsのバージョンを確認してみます。

ついでにバンドルでインストールされているnpmのバージョンも確認してみます。

これでNode.jsのインストールは完了です。

Gulp のインストール

次にGulpをグローバルにインストールします。

これでインストール完了です。もしインストールに失敗するようなら、

──とオプションを付けてみると上手くいくかもしれません。
次に、ローカルにインストールします。
ローカルにインストールするにあたっては、npmの初期化を行う必要があります。まず任意にgulpを実行したいディレクトリを作成します。この記事では、C:\npm\node_modules\gulp というディレクトリを新たに作成しています。

対話式にいくつか属性値を聞かれるので、任意に入力します(すべてEnterでも可です)。
初期化ができたら、早速ローカルにgulpをインストールします。

--save-dev のオプションはgulpの開発用パッケージをインストールするかどうかの指定なので、特に付けなくても構いません。
これでGulpが利用できるようになりました。

Gulpで各種コンパイル

1. SASSのコンパイル

qulpでSASSをコンパイルするためにはSASSプラグインが必要なので、インストールします。

インストールが終わったら、コンパイル元のCSSソースファイルを作ります。

SCSSファイルの中身:

次にコンパイルタスクを作ります。gulpをローカルインストールしたディレクトリ直下(この例では C:\npm\node_modules\gulp )に gulpfile.js を作成します。

タスクができたら、早速コンパイルを実行してみます。

これで、CSS フォルダが作成され、その中にコンパイル済みのCSSファイルが書き出されています。CSSファイルの中をのぞいてみると、

おぉ~、きちんとビルドされてますね。
これで、Gulp + SASS のコンパイル環境は実装できました。次に、LESSのコンパイル環境を作ってみようと思います。

2. LESSのコンパイル

基本的にSASSと同じ流れになります。つまり、qulpでLESSをコンパイルするためにはLESSプラグインが必要なので、インストールします。

インストールが終わったら、コンパイル元のCSSソースファイルを作ります。

LESSファイルの中身:

CSSプリコンパイル環境下で一番重宝すると思われるであろうスタイルのプロパティ値に変数を使ってみたサンプルです。

そして、コンパイルタスクを作ります。gulpをローカルインストールしたディレクトリ直下(この例では C:\npm\node_modules\gulp )の gulpfile.js を編集します。

今度は、対象ソースを less/ 以下のすべての .less ファイルにしてあります。
タスクができたら、早速コンパイルを実行してみましょう。

これで、CSS フォルダの中にコンパイル済みのCSSファイルが書き出されています。CSSファイルの中をのぞいてみると、

LESSのコンパイルは、SASSコンパイルよりインデントが整形されていていい感じですね。

3. CoffeeScriptのコンパイル

やり方は、前出のSASS、LESSとほとんど同じで、使うプラグインだけが異なる感じです。まず、CoffeeScriptコンパイル用のプラグインをインストールします。

インストールが終わったら、コンパイル元のCoffeeScriptファイルを作ります。

CoffeeScriptファイルの中身:

サンプルの中身はjQueryのコードです。.buttonのクラス要素をクリックした時のイベントハンドラにて確認ダイアログを出す処理になっています。

そして、コンパイルタスクを作ります。gulpをローカルインストールしたディレクトリ直下(この例では C:\npm\node_modules\gulp )の gulpfile.js を編集します。

対象ソースは coffee/ 以下のすべての .coffee ファイルになります。
では早速コンパイルを実行してみましょう。

これで、js フォルダが作成され、その中にコンパイル済みのJavaScriptファイルが書き出されています。JavaScriptファイルの中をのぞいてみると、

すばらしい!

ちなみに、Gulpのプラグインはそれぞれで共存できるので、それぞれのタスクをgulpfile.jsにマージしておくことで、SASS、LESS、CoffeeScriptのすべてをコンパイルできる環境にできます。また、Gulpプラグインにはデフォルトで定義しておくべき有効なもの(ベンダープリフィックス自動付与やミニファイなど)が他にも結構あるので、その辺は利用シーンに合わせて探してみると良いでしょう。

これで、ようやく今どきのフロントエンド開発用必要最小限環境が整いました。

おすすめ記事