Grunt:监视文件更改并编译父目录

时间:2015-01-13 11:20:35

标签: node.js gruntjs

我正在使用grunt开发一个项目,我之前没有使用过grunt,目前这是设置为监视文件,当文件被更改时重新编译所有文件(包含数百个文件的多个子目录)把手变成html很慢。我想通过仅编译所需的内容来改进这个过程。

使用grunt newer查看文件并不真正起作用,因为目录中存在依赖关系,因此只重新编译已更改的文件将不会生成有效页面。

我基本上需要重新编译已更改的文件的整个父目录,但我不太确定如何配置这样的东西。

我应该注意哪些提示?

汇编本身的配置如下:

 var _ = require('lodash');
 var path = require('path');
 // expand the data files and loop over each filepath
 var pages = _.flatten(_.map(grunt.file.expand('./src/**/*.json'), function(filepath) {
    // read in the data file
    var data = grunt.file.readJSON(filepath);
    var dest=path.dirname(filepath)+ '/' +path.basename(filepath, path.extname(filepath));
    dest=dest.replace("src/","");
    var hbs;
    if (data.hbs){
        hbs=grunt.file.read(path.dirname(filepath)+ '/' + data.hbs)
    }

    // create a 'page' object to add to the 'pages' collection
    return {
    // the filename will determine how the page is named later
    filename: dest,
    // the data from the json file
    data: data,
    // add the recipe template as the page content
    content:hbs 
    };
 }));

return {
    options: {
        /*postprocess: require('pretty'),*/
        marked: {sanitize: false},
        data: '<%= options.src %>/**/*.json',
        helpers: '<%= options.src %>/helpers/helper-*.js',
        layoutdir: '<%= options.src %>/templates',
        partials: ['<%= options.src %>/components/**/*.hbs']
    },
    build: {
        options: {
            layout: 'base.hbs',
            assets: '<%= options.build %>',
            pages: pages
        },
        files: [
            {
                cwd: '<%= options.src %>', 
                dest: '<%= options.build %>',
                src: '!*'
            }
        ]
    },
}

因此,每次加载所有页面都会像/src/sites/abc/xyz/foo.json一样向下扫描并进行编译,但我只想更改文件。 Watch会检测更改的文件,但所有文件都会再次编译,我不知道如何才能获得监视已在配置中识别的已更改文件,以便仅处理部分文件。

0 个答案:

没有答案