1

LESS、CoffeeScriptなどを監視するための複数のサブタスクを備えた面倒な監視タスクがあります.

    watch:
        jade:
            files: ['<%= yeoman.app %>/*.jade']
            tasks: ['jade']
        less:
            files: ['<%= yeoman.css %>/*.less']
            tasks: ['less']
        coffee:
            files: ['<%= yeoman.scripts %>/*.coffee']
            tasks: ['coffee']
        edge:
            files: ['<%= yeoman.comp %>/*']
            tasks: ['edge']
        livereload:
            options:
                livereload: true
            files: [
                '<%= yeoman.app %>/*.html'
                '<%= yeoman.css %>/*.css'
                '<%= yeoman.scripts %>/*.js'
            ]

また、頻繁に更新される一連のサードパーティ ファイルの処理を担当するカスタム タスクを作成しました。タスクは、サード パーティの javascript および html ファイル内のいくつかのパスを更新し、それらをメイン プロジェクト内の適切な場所に再配布します。

問題は、これらの各ファイルが宛先に書き込まれるときに、関連する grunt タスクが実行され、それぞれがライブ リロードをトリガーすることです。したがって、4 つのファイルが書き込まれると、4 回の個別のリロードが発生します。

すべてのライブ リロード イベントを「最後」に 1 回のリロードに統合するように監視タスクを構成する方法はありますか?

4

1 に答える 1

1

私はこれを個人的に試したことはありませんが、調べる価値のあるtiny-lrが見つかるかもしれません。カスタム タスクを作成している場合は、tiny-lr サーバーにリクエストを投稿して、一度に複数のファイルをリロードできます (grunt-shell などを介してこれを実行できる可能性があります)。

# notify a single change
curl http://localhost:35729/changed?files=style.css

# notify using a longer path
curl http://localhost:35729/changed?files=js/app.js

# notify multiple changes, comma or space delimited
curl http://localhost:35729/changed?files=index.html,style.css,docs/docco.css

標準の構成がそれ自体で必要なことを行うかどうかはわかりませんが、試してみる価値はあります:

grunt.loadNpmTasks('tiny-lr');
grunt.initConfig({
  watch: {
    reload: {
      files: ['**/*.html', '**/*.js', '**/*.css', '**/*.{png,jpg}'],
      tasks: 'tinylr-reload'
    }
  }
});

grunt.registerTask('reload', ['tinylr-start', 'watch']);

変更されたファイルに基づいてタスクのみを実行するgrunt-newerもあります。これを時計のセットアップで使用すると、ファイルを 1 つだけ保存するたびにすべてのファイルを処理する必要がないため、多くの時間を節約できます。

お役に立てれば。

于 2013-09-26T23:22:45.337 に答える