我无法从异步模块(https://github.com/jergason/recursive-readdir传递数据,说实话,每个异步操作都有问题 - fs.readdir也是如此。
我希望Grunt有本机方法,如:grunt.file.readJSON()来递归读取目录......
一开始我用recursive-readdir创建了一个简单的模块并将其直接包含在Gruntfile.js中(没有效果),但在阅读Grunt doc之后,this.async就出现了。即使仍然无法将recursive-readdir的异步文件列表传递给Jade模板:
指定任务
var recursive = require('recursive-readdir');
grunt.registerTask('readFileList', 'Lists recursively files list. from given path', function() {
var done = this.async();
var fileList = recursive('somePath', function (err, files) {
console.log('log files: ', files);
});
done(fileList);
grunt.config.set('readyList', fileList);
});
INIT CONFIG
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
config: {
list: grunt.config.get('readyList')
}...
包含数据
jade: {
dev: {
options: {
pretty: true,
data: {
asyncData: grunt.config.list
//asyncData: fs.readdirSync('.tmp')
}
}...
"工作"回答我的问题:https://github.com/cachaito/grunt_list_files已创建。
答案 0 :(得分:0)
感谢this answer我找到了解决方案:
指定任务
grunt.registerTask('readFileList', 'Lists recursively files list. from given path', function() {
var done = this.async();
var fileList = recursive('./.tmp', function (err, files) {
grunt.config(['initData'], files);
console.log('RECIEVED FILES: ', files);
done();
});
});
INIT CONFIG
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
initData: {}...
包含数据
jade: {
dev: {
options: {
pretty: true,
data: {
asyncData: '<%= initData %>'
}
}...
希望这会对某人有所帮助。 Git repo已更新。