Laravelフレームワークをお使いの人には、
馴染みのあるlaravel-elixirですが、lumenにも導入可能です。

laravel-elixirはnode.jsのタスクランナーgulpをラップしたライブラリーで、
CoffeeScriptやSASSのコンパイル、コマンド一つでphpunitのテスト実行を走らせることも出来ます。

lumen FrameworkはLaravelの軽量ライブラリの位置づけなだけあり、特に特別な設定も必要ありません。

開発環境はMac OSX Yosemaite(10.10.5)を使っています。


必要なパッケージの導入

node.jsの最新版、4.0がリリースされていますが、
リリースされてまだ浅い為、今回は0.12.7を使っています。

node.js v0.12.7のダウンロードページ

最新版のnode.js v4.1.2でも動作を確認しました。

node.js ダウンロードページ

node.jsのインストールが完了したら、続いてgulpのインストールをします

sudo npm install --global gulp

gulpが正しくインストールされていれば、gulp -vのコマンドを叩くと、
現在のバージョンを確認することが出来ます。

Your-Mac:~ yourFolder$ gulp -v
[04:01:31] CLI version 3.9.0


laravel-elixirのインストール

続いてはlumenプロジェクトにlaravel-elixirのインストールをします。

lumenのプロジェクト直下に、package.jsonファイルを作成し、
内容は以下のようにします。

* LumenProject/package.json

{
  "private": true,
  "devDependencies": {
    "gulp": "^3.8.8"
  },
  "dependencies": {
    "laravel-elixir": "^3.0.0"
  }
}

package.jsonを作り、
その後コマンドライン上で以下のコマンドを入力するとlaravel-elixir本体がインストールされます。

sudo npm install
# vagrant等でシェアファイルを使っている場合は下記のコマンド
# npm install --no-bin-links

プロジェクト直下に"node_modules"のフォルダが生成されていれば、
正しくインストールされています。
 

versioning / cash busting機能の実装 

このままでもコンパイル等は可能なのですが、インストールするだけではversioning機能が使えません。

機能を実装する為に下記のコードをbootstrap/app.php内に追加します。

// bootstrap/app.php

if (! function_exists('elixir')) {
    /**
     * Get the path to a versioned Elixir file.
     *
     * @param  string  $file
     * @return string
     *
     * @throws \InvalidArgumentException
     */
    function elixir($file)
    {
        static $manifest = null;

        if (is_null($manifest)) {
            // app.php内に書きたくない場合は、file_get_contents内のパスを変更する
            $manifest = json_decode(file_get_contents('../public/build/rev-manifest.json'), true);
        }

        if (isset($manifest[$file])) {
            return '/build/'.$manifest[$file];
        }


        throw new InvalidArgumentException("File {$file} not defined in asset manifest.");
    }
}


これでversioning機能がLumenでも使えるようになりました。

Laravelドキュメント : Versioning / Cash Busting

 

次のページではタスクを走らせる為に必要なファイルを作成します。

 

Page: 1

この記事のカテゴリ

プログラミング

この記事のタグ

Lumen , Laravel , nodejs

Socialシェアボタン

スポンサーリンク