当前位置: 首页 > 面试题库 >

Grunt:监视多个文件,仅编译已更改

符学
2023-03-14
问题内容

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

当前,在我的Grunfile.coffee中(相关部分)。
注意:资产/javascript/app.coffee和资产/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

解决方法可能更短一些,但是我首先将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...

当前,我只是在设置项目,但是我将有更多的Coffeescript文件,并且我不希望Coffeescript在每次文件更改时重新编译所有文件。

此外,libs.js根本不包含所有这些内容,但是我猜它仍在编译中,因为它也匹配“ assets / * / .js”模式。

有没有办法使Grunt仅编译已更改的文件?


问题答案:

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

npm install grunt-newer --save-dev

然后在您的Gruntfile中(在以grunt加载任务之后):

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

就是这样!很棒的 咕unt新手 很棒!



 类似资料:
  • 我们在框架中有多个子模块,scss文件夹有多个可能的路径,例如: fW/submodule/_wwW/css/foo/bar/scss/ fW/submodule/subsubmodule/_www/css/foo/bar/fooagain/scss/ fw/submodule/views/tpl/library/libraryname/default/css/foo/bar/scss/ 等等。

  • 问题内容: 我正在使用Grunt构建我的Web项目。我安装了软件包,并向我添加了一个任务 当我通过 更少 运行目标时,它运行没有错误,但没有将less文件编译为css文件。 我也通过node 安装了 lessc 软件包。做的很好。 目前,我已将 files选项 直接指向一个目录,该目录包含一个要测试的文件。即使我将整个文件名写入 files选项 ,也不会发生任何事情… 稍后,我想扫描整个js目录并

  • 试图编译多文件包。需要通过进行编译,同时通过一个文件同时编译所有其他文件(大约4个其他.Java文件)?我已经尝试使用了extend和等语句。 我使用了不同的编译方法和参数,但尝试只插入和 摘要:试图一次编译多个Java文件,通过Java编译单个文件。 主文件的当前代码:

  • 问题内容: 我想在目录中监视来自C应用程序的新文件。但是,我对修改后的文件不感兴趣,仅对新文件感兴趣。目前,我为此目的使用readdir / stat: 知道如何在不保留文件列表的情况下检测 Linux和Solaris 10 上新创建的文件吗? 问题答案: 解决方案是将最后访问时间存储在全局变量中,并使用过滤器选择最新文件: : 统计信息(由路径扩展,但这仅是详细信息) 统计信息(由路径扩展,但这

  • 我需要监视多个文件夹以获取新文件通知。我尝试了一个目录,它工作得很好 我的文件夹结构类似于路径。获取(“c:\users\Test”);路径path1=路径。获取(“c:\users\test1”);路径路径2=路径。获取(“c:\users\test2”); 我尝试将每个目录注册到watcher。WatchKey key1=路径1。注册(观察者、条目和创建);WatchKey key2=路径2。

  • 我尝试使用以下命令编译2个jar文件和4个java源文件: javac-classpath junit-4.12.jar jar2.jar 1.java 2.java 3.java 4.java 但是,我得到以下错误: