我正在使用grunt进行项目工作,之前我没有与grunt一起工作过,而且当前设置为监视文件以及文件已更改时重新编译所有文件(包含数百个文件的多个子目录)将句柄转换为html,这很慢。我想通过只编译需要的东西来提高速度。Grunt:监视文件更改并编译父目录
使用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确实检测到已更改的文件,但是所有文件都会重新编译,我不知道如何才能将已在配置中识别的已更改文件仅处理部分文件。
你能否告诉我们质疑相关的配置? – raidendev
当然,我已经添加了我所了解的组装过程的基本代码。 – bardiir