44

gruntの使用方法を学習する際に、単純なコーヒー スクリプト ウォッチャー/コンパイラを作成しようとしています。問題は、複数のファイルを監視するようにタスクに指示し、 1 つの変更を行うと、すべてのファイルがコマンドwatchに渡されることです。coffeeこれは、1 つのファイルを変更すると、パターンに一致するすべてのファイルが再コンパイルされることを意味します。代わりに、パターンsrcに一致する変更された単一のファイルのみを再コンパイルしたいと考えています。src

は次のgrunt.jsとおりです。

module.exports = function(grunt) {
  grunt.initConfig({
    coffee: {
      app: {
        src: ['test/cases/controller/*.coffee'],
        dest: 'tmp',
        options: {
          bare: true,
          preserve_dirs: true
        }
      }
    },
    watch: {
      files: ['<config:coffee.app.src>'],
      tasks: ['coffee:app']
    }
  });

  grunt.loadNpmTasks('grunt-coffee');
  grunt.registerTask('default', 'coffee');
};

これは基本的にこれであるgrunt-coffeeを使用しています: https://gist.github.com/2373159

を実行grunt watchし、ファイルを に保存すると、一致するすべてtest/cases/controller/*.coffeeのファイルがコンパイルされます (それらは に入れられます)。tmp/*

代わりに、 grunt を使用して変更されたファイルのみをコンパイルするにはどうすればよいですか?

4

7 に答える 7

15

今後の (現在開発中の) v0.4.0a grunt には、この目的のために特別に設計されたgrunt.file.watchFilesオブジェクトがあります。grunt-coffee プラグインは、この機能のサポートを既に追加している可能性がありますが、私にはわかりません。

いずれにせよ、プロジェクトで grunt の開発中バージョンを試すことに興味がある場合は、いつ開発中の機能 'X' を使用できるようになりますか? を確認してください。よくある質問のエントリ。

于 2012-08-22T12:33:45.170 に答える
4

None of these answers worked very well for me. Here is my solution if anyone is interested (I know I'm a little late in replying to this question).

https://gist.github.com/ryansmith94/8569178

于 2014-01-22T23:00:50.650 に答える
3

このでは、Kyle Robinson がwatchイベントの使用を提案しています。nospawnこれを機能させるには、watch タスクプロパティをに設定することが非常に重要trueです。タスクを選択的に実行するように彼のソリューションを変更しました。

grunt.event.on('watch', function(action, filepath) {
    if (minimatch(filepath, grunt.config('watch.stylesheets.files'))) {
        grunt.config('compass.dist.options.specify', [filepath]);
    }

    if (minimatch(filepath, grunt.config('watch.scripts.files'))) {
        var uglifySrc = filepath.replace(grunt.config('uglify.dist.cwd'), '');
        grunt.config('jshint.dist.src', [filepath]);
        grunt.config('uglify.dist.src', [uglifySrc]);
    }
});

完全なソリューションは次のとおりです: https://gist.github.com/luissquall/5408257

于 2013-04-17T22:28:09.550 に答える