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

従来、WEBフロントエンドの主要アセットであるCSSとJavaScriptはソースレベルでなかなか管理しづらく、すぐにカオスな領域に突入して保守しづらくなっていました。そのカオスな領域にあるCSSやJavaScriptをソースレベルでもっと保守管理しやすいように生み出されたのがGruntやGulpというコンパイルビルドの仕組みです。今の世の流れ的に、フロントエンド開発ではSCSS(SASS、LESS等)、CoffeeScriptなどでCSSやJavaScriptのコーディングを効率化しつつ、同時にソースの保守管理をし易くするという開発手法がデフォルトになってきました。
実際にLESSで変数を使ったCSSスタイリングや、コード量が劇的に少ないCoffeeScriptでJavaScriptを書いてみると、圧倒的なコード生産性の高さに、もはや今までのベタなフロントエンドコーディング手法は改めざるを得ないという境地になります。
──と云うことで、早速CSS/JavaScriptのコンパイルビルドを行う環境をサービス提供用のCentOSサーバに作ってみようかと思います(ローカル開発環境としてのWindowsマシンへの導入はこちらの記事を参照)。

ちなみに、Gulpは「ガルプ」と読みます。私は最初「グループ」とか読んでました…(笑)

Node.js のインストール

まずはGulpはnode.jsのモジュールなので、node.jsをインストールしないことには始まりません。そんな訳で、node.jsをインストールするのですが、まずはnode.jsやライブラリのバージョン管理モジュールであるnvmからインストールしていきます。
下記のように、nvmをGitHubからクローンして同梱のシェルでインストールします。

次に、node.jsをインストールするのですが、その前に現在のnode.jsの安定バージョンを Node.jsの公式サイト を確認しましょう。TOPページの真ん中あたりに「Current Version: v0.12.2」というように記載されているので、そのバージョンをインストールするのが無難です(2015年4月7日時点のNode.jsの安定バージョンは0.12.2でした)。
インストールバージョンが決定したら、nvmでインストールします。

バージョン確認してインストールバージョンが表示されればOKです。
最後に、自分のコンソール環境でnode.jsが利用できるように .bashrc に以下の記述を追記しておきます。

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

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

Gulp のインストール

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

これでインストール完了です。簡単ですね。

次に、ローカルにインストールします。
ローカルにインストールするにあたっては、npmの初期化を行う必要があります。まず任意にgulpを実行したいディレクトリを作成します。この記事では自分のホームディレクトリ内に、 ~/gulp_build というディレクトリを新たに作成しています。

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

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

Gulpで各種コンパイル

1. SASSのコンパイル

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

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

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

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

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

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

2. LESSのコンパイル

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

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

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

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

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

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

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

3. CoffeeScriptのコンパイル

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

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

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

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

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

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

すばらしい!

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

これで、CSSやJavaScriptもGitHubなどでソースの管理および開発を行いつつ、CentOSサーバなどのサービス環境側ではソースをプリコンパイルしてデプロイするという、今どきのWebサービス環境が整いました。

おすすめ記事