0

grunt ウォッチ プラグイン ( https://www.npmjs.org/package/grunt-contrib-watch ) を使用してカスタム ファイルウォッチャーを作成しようとしています。私は、coffeescript ファイルが変更されたときにコンパイルされるコンパイル スクリプトを作成しています。これが基本的な構成です。

grunt.initConfig(
    pkg: grunt.file.readJSON 'package.json'
    watch:
      cofee_files:
        files: ['client/**/*.coffee'],
        tasks: ['start'],
        options:
          spawn: false,

grunt.registerTask( 'start', 'starting coffee compilation', (filepath)->
    console.log(filepath)

ファイルでコンパイルを実行し、出力をソースのcoffeescriptファイルのファイルパスに関連するディレクトリに保存できるようにするには、ファイルパスを入力として取得する必要があります。上記のコードでは、ファイルパスの値が undefined で渡されました。これはログ出力で確認できます。それに応じてcoffeescriptコンパイラを動的に構成できるように、変更されたファイルのファイルパスを取得するのを手伝ってください。

4

1 に答える 1

0

ウォッチ イベントにハンドラーを登録する必要があります。そこで、coffee-task の設定に使用できるファイルパスを取得します。

(コードはテストされていませんが、アイデアは理解できると思います)

path = require 'path'

grunt.initConfig(
  pkg: grunt.file.readJSON 'package.json'

  watch:
    cofee_files:
      files: ['client/**/*.coffee'],
      tasks: ['start'],
      options:
        spawn: false,
  coffee:
    compile: 
      files: []


  grunt.event.on 'watch', (action, filepath) ->
    # modify your coffee task here
    newCoffeeConfig = 
      cwd: path.dirname(filepath)
      src: path.basename(filepath)
      dest: path.dirname(filepath)
      ext. '.js' 

    grunt.config.get('coffee:compile.files').push newCoffeeConfig
    grunt.task.run 'coffee:compile'
于 2014-05-28T21:20:08.033 に答える