保存している単一のファイルに対してのみ、coffee lint と coffee compile を実行したいと思います。私のプロジェクトには何百もの CoffeeScript ファイルがあり、それらすべてをコンパイルするには時間がかかりすぎます。
これが私のGruntfileです:
module.exports = (grunt) ->
grunt.initConfig
pkg: grunt.file.readJSON 'package.json'
coffee:
all:
expand: true
bare: true
cwd: 'src/coffeescript/'
src: '**/*.coffee'
dest: 'public/js/compiled'
ext: '.js'
coffeelint:
all: ['src/coffeescript/**/*.coffee']
watch:
coffeescript:
files: ['src/**/*.coffee']
tasks: ['coffeelint', 'coffee']
options:
spawn: false
grunt.event.on 'watch', (action, filepath) ->
grunt.config(['coffeelint', 'all'], filepath)
grunt.config(['coffee', 'all'], filepath)
grunt.loadNpmTasks 'grunt-coffeelint'
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.registerTask 'default', ['coffeelint', 'coffee', 'watch']
coffeelint タスクは、変更されたファイルに対してのみ正常に実行されます。
コーヒーのコンパイルは、grunt が実行すると言いますが、JS ファイルを生成しません。
単一のコーヒー ファイルを保存した後の出力は次のとおりです。
OK
>> File "src/coffeescript/app.coffee" changed.
Running "coffeelint:all" (coffeelint) task
>> 1 file lint free.
Running "coffee:all" (coffee) task
Running "watch" task
Completed in 0.009s at Sat Feb 01 2014 13:10:07 GMT-0600 (CST) - Waiting...
ここで何が問題なのですか?どんな助けでも大歓迎です!
アップデート:
これが実際の例です:
module.exports = (grunt) ->
fs = require 'fs'
isModified = (filepath) ->
now = new Date()
modified = fs.statSync(filepath).mtime
return (now - modified) < 10000
grunt.initConfig
coffee:
options:
sourceMap: true
bare: true
force: true # needs to be added to the plugin
all:
expand: true
cwd: 'src/coffeescript/'
src: '**/*.coffee'
dest: 'public/js/compiled'
ext: '.js'
modified:
expand: true
cwd: 'src/coffeescript/'
src: '**/*.coffee'
dest: 'public/js/compiled'
ext: '.js'
filter: isModified
coffeelint:
options:
force: true
all:
expand: true
cwd: 'src/coffeescript/'
src: '**/*.coffee'
modified:
expand: true
cwd: 'src/coffeescript/'
src: '**/*.coffee'
filter: isModified
watch:
coffeescript:
files: ['src/**/*.coffee']
tasks: ['coffeelint:modified', 'coffee:modified']
grunt.loadNpmTasks 'grunt-coffeelint'
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.registerTask 'default', ['coffeelint:all', 'coffee:all', 'watch']