Help us understand the problem. What is going on with this article?

ブラウザ拡張なしでLiveReloadする

More than 3 years have passed since last update.

GruntのLiveReloadがブラウザ拡張に依存していたので、依存しない方法でLiveReloadさせてみました。
ビルトインサーバでPHPを起動するようになっていれば、package.jsonとGruntfile.jsをプロジェクトルートに設置して、npm installするだけで使えるようになります。
検証はFuelPHPで行いましたが、PurePHPでも静的サイトでもフレームワークでも使えると思います。
(至る箇所に.htaccessがあるプロジェクトだときついかも)

以下のサイトを参考に作成しました。(este watchはパフォーマンス上げるついでに)
http://tech.nitoyon.com/ja/blog/2013/10/10/grunt-watch-slow/
http://ngyuki.hatenablog.com/entry/2013/12/13/102214

1.npmのインストール

 割愛

2.grunt-cliをglobal installする

grunt-cliはglobal installしないといけないみたいです。

$ npm -g install grunt-cli

3.package.jsonとGruntfile.jsを設置

Gistにあります。どうぞ持っていってください。
https://gist.github.com/ya-sasaki/bfd4f0580fd60500f488

4.パッケージをインストール

プロジェクトのルートでnpmパッケージをインストールします。

$ npm install

5.リソースへのアクセス

対外、uriパス上にリソースがない場合はpublic/index.phpからフレームワークがbootstrapするのですが、
FuelPHPで試していたところjsonのuriでこけていました。(http://localhost/hoge/fuga.json)

拡張子をつけるとリソースとみなすので普通にリソース探しにいって404、、、
RestControllerが使えなくなるので

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]

これと同様のことをするルータースクリプトをpublic下に設置して、Gruntからビルトインサーバを起動するようにします。
Fuelphpのphpserver.phpをパクり、public下にrouter.phpとして配置します。

<?php
/**
 * Fuel
 *
 * Fuel is a fast, lightweight, community driven PHP5 framework.
 *
 * @package    Fuel
 * @version    1.6
 * @author     Fuel Development Team
 * @license    MIT License
 * @copyright  2010 - 2013 Fuel Development Team
 * @link       http://fuelphp.com
 */

// determine the file we're loading, we need to strip the query string for that
if (isset($_SERVER['SCRIPT_NAME']))
{
    $file = $_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME'];
}
else
{
    $file = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
    if (($pos = strpos($file, '?')) !== false)
    {
        $file = substr($file, 0, $pos);
    }
}

if (file_exists($file))
{
    // bypass existing file processing
    return false;
}
else
{
    // route requests though the normal path
    include($_SERVER['DOCUMENT_ROOT'].'/index.php');
}

6.起動とか

今回用意したGruntfile.jsは以下のことができます。

# 自動リロードしないモードでビルトインサーバを起動します。
$ grunt
# 自動リロードするモードでビルトインサーバを起動します。
$ grunt live
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away