我正在使用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会检测更改的文件,但所有文件都会再次编译,我不知道如何才能获得监视已在配置中识别的已更改文件,以便仅处理部分文件。