編集:バージョン情報を確認してください。grunt-contrib-watch
livereload サポートが組み込まれました。
すごい。私もこれで問題に遭遇したので、説明できることをさせてください(または、少なくともあなたを立ち上げて実行してください). これが私がセットアップした方法であり、ほとんどの場合うまくいくようです。
package.json
手始めに、適切な依存関係で更新したことを確認する必要があります。livereload が焼き付けられた「監視」タスクで機能するかどうかはわかりません。最近、うなり声を使用しています。私のpackage.jsonは通常次のようになります。
"dependencies": {
"grunt": "~0.4.x",
"grunt-contrib-livereload": "0.1.2",
"grunt-contrib-connect": "0.2.0",
"grunt-regarde": "0.1.1"
},
あなたがうなり声(duhhh)、livereload、connectが必要なObviは、フォルダーのマウントに役立つようで、rememberはうなり声のようなものです。
package.json
必要に応じて、独自の「devDependencies」オブジェクトで livereload を指定することで、さらに改善できます。さて、古き良きファッションを実行してnpm install
、プロジェクトのグッズを手に入れましょう。
グラントファイルについて話しましょう:
おそらくご存じのとおり、gruntfile によって魔法が起こります。gruntfile の一番下のどこかで、次のように指定します。
grunt.loadNpmTasks('grunt-regarde');
grunt.loadNpmTasks('grunt-contrib-livereload');
grunt.loadNpmTasks('grunt-contrib-connect');
gruntfile の先頭に、livereload 用のユーティリティをいくつか追加します。の下/*global module:false*/
に、先に進んで追加しvar lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;
ます。
その後、実際に接続を学習する必要はありません。使用するだけです。私のスタイルをチェックしてください:
var folderMount = function folderMount(connect, point) {
return connect.static(path.resolve(point));
};
これは前に来るmodule.exports = function(grunt) {
それでは、gruntfile の内容に入りましょう。繰り返しますが、connect が何をしているのか忘れてしまいましたが、ここでミドルウェアの魔法が活躍します。modules.exports に以下を追加します。
connect: {
livereload: {
options: {
port: 9999,
middleware: function(connect, options) {
return [lrSnippet, folderMount(connect, '.')]
}
}
}
},
次に、ファイルを監視します。CSS ファイルを保存するたびに grunt プロセス全体を実行したくないので、いくつかの異なるタスクを設定するのが好きです。これが私が扱うものです(再び、に追加しmodule.exports
ます):
regarde: {
txt: {
files: ['styles/*.css', 'index.html'],
tasks: ['livereload']
},
styles: {
files: ['sass/*.scss', 'sass/*/*.scss'],
tasks: ['compass']
},
templates: {
files: ['templates/*.jade'],
tasks: ['jade']
}
},
コンパイル済みの css ( ) またはコンパイル済みの html に変更があった場合にのみ、livereload を起動したいことがわかります。*.css
SCSS ファイルを編集する場合は、コンパスだけを発射したいと考えています。jade テンプレートを編集する場合、jade to HTML コンパイラのみを起動したいと考えています。何が起こっているかを見ることができると思います。無限ループに陥る可能性があるため、これをいじることができます。
最後に、これらのプロセスを起動する必要があります。私の gruntfile はとても甘いので、それらすべてをメインの grunt タスクに結び付けるのが好きです。
// Default task.
grunt.registerTask('default', ['livereload-start', 'connect', 'regarde']);
ここでgrunt
、CLI を起動すると、次のような結果が得られるはずです (願わくば、おそらく、指を交差させてください)。
Running "connect:livereload" (connect) task
Starting connect web server on localhost:9999.
参照してhttp://localhost:9999/yourpage.html
、魔法が起こるのを見てください。
ここに完全な gruntfile があります。 ここに完全な package.json があります。