当我在Node命令提示符下运行命令时,它们工作正常。
fs= require('fs')
fs.readdir('.',function(e,files){console.log(files)})
但是,当我将上面的行插入到我的gruntfile.js中时,根本没有执行回调函数。你能告诉我如何获取Gruntfile.js中某个文件夹中的文件列表吗?
Gruntfile.js:
'use strict';
var fs= require('fs');
module.exports= function(grunt){
var configs = require('load-grunt-configs')(grunt);
grunt.initConfig(configs);
require('load-grunt-tasks')(grunt);
fs.readdir('.', function(err,files){
console.log(files);
})
}
答案 0 :(得分:7)
要使节点文件系统在grunt中运行,任务需要是异步的。这是代码:
var fs = require('fs');
module.exports = function(grunt) {
grunt.registerTask('showFiles', function() {
var done = this.async(); // creating an async variable
fs.readdir('.', function(err, files) {
console.log(files);
done(); // call when the task is done
})
})
var files = fs.readdirSync('.');
console.log('Showing Files Read Synchronously');
console.log(files);
}
//输出
▶ grunt showFiles
Showing Files Read Synchronously
[ 'Gruntfile.js', 'index.js', 'node_modules', 'test.js' ]
Running "showFiles" task
[ 'Gruntfile.js', 'index.js', 'node_modules', 'test.js' ]