Grunt:观看多个文件,仅编译已更改

jus*_*ris 42 node.js coffeescript gruntjs

我是Grunt的新手,到目前为止,我非常喜欢它.我希望Grunt在运行时只编译已更改的文件grunt watch

在我的Grunfile.coffee中,我目前有(相关部分).
注意:assets/javascript/app.coffee和assets/javascript/app.js是目录

    coffee:
        default:
            expand: true
            cwd: "assets/javascript/app.coffee"
            src: ["*.coffee"]
            dest: "assets/javascript/app.js"
            ext: ".js"

    uglify:
        dev:
            options:
                beautify: true
                compress: false
                mangle: false
                preserveComments: 'all'

            files: 
                "js/app.js": "assets/javascript/app.js/*.js"
                "js/libs.js": "assets/javascript/libs/*.js"

    watch:
        coffeescript:
            files: 'assets/javascript/**/*.coffee'
            tasks: ["coffee"]

        javascript:
            files: "assets/**/*.js"
            tasks: ["uglify:dev"]
        livereload:
            files: ["Gruntfile.coffee", "js/*.js", "*.php", "css/*.css", "images/**/*.{png,jpg,jpeg,gif,webp,svg}", "js/*.js", ]
            options:
                livereload: true
Run Code Online (Sandbox Code Playgroud)

可能有一个较短的方法,但我首先将app.coffee编译为app.js,这样在我分发我的作品后,对Coffeescript不熟悉的人可以以合理的方式浏览代码.

所有这一切的问题是,现在我保存了一个Coffeescript文件,我得到了太多步骤(我认为):

>> File "assets/javascript/app.coffee/browse.coffee" changed.

Running "coffee:default" (coffee) task
File assets/javascript/app.js/browse.js created.
File assets/javascript/app.js/filters.js created.

Done, without errors.
Completed in 0.837s at Tue May 28 2013 12:30:18 GMT+0300 (EEST) - Waiting...
OK
>> File "assets/javascript/app.js/browse.js" changed.
>> File "assets/javascript/app.js/filters.js" changed.

Running "uglify:dev" (uglify) task
File "js/app.js" created.
File "js/libs.js" created.

Done, without errors.
Completed in 0.831s at Tue May 28 2013 12:30:19 GMT+0300 (EEST) - Waiting...
OK
>> File "js/app.js" changed.
>> File "js/libs.js" changed.

Completed in 0.000s at Tue May 28 2013 12:30:19 GMT+0300 (EEST) - Waiting...
Run Code Online (Sandbox Code Playgroud)

目前我只是设置我的项目,但我会有更多的Coffeescript文件,我不希望Coffeescript重新编译所有文件,每次更改文件.

此外,libs.js完全不参与所有这些,但我猜它仍然被编译,因为它也匹配"assets/*/ .js"模式.

有没有办法让Grunt只编译已更改的文件?

jus*_*ris 75

我终于找到了一个真正的解决方案!它也非常简单!

npm install grunt-newer --save-dev

然后在你的Gruntfile中(在grunt中加载任务后):

watch:
    coffeescript:
        files: 'assets/javascript/**/*.coffee'
        tasks: ["newer:coffee"]
Run Code Online (Sandbox Code Playgroud)

就是这样!令人敬畏的咕噜声更新!