【发布时间】:2015-01-19 22:32:03
【问题描述】:
我正在使用 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 确实检测到更改的文件,但所有文件都会再次编译,我不确定如何让 watch 在配置中识别出的更改文件只处理部分文件。
【问题讨论】:
-
你能告诉我们与问题相关的配置吗?
-
当然,我已经添加了我理解为组装过程的基本代码。