从 grunt 任务执行节点命令
execute a node command from a grunt task
我有一个 g运行t 任务,我想从中 运行 一个节点命令。当我 运行 命令时,该命令没有给出任何错误,但我期待任务的一些控制台输出,我似乎根本没有得到。
为了运行这个节点任务我错过了什么?
grunt.registerTask('asyncfoo', 'My "asyncfoo" task.', function() {
// Force task into async mode and grab a handle to the "done" function.
var done = this.async();
// Run some sync stuff.
grunt.log.writeln('Processing task...');
grunt.util.spawn({ cmd: 'node', args: ['S3ListBuckets.js']});
// And some async stuff.
setTimeout(function() {
grunt.log.writeln('All done!');
done();
}, 1000);
});
!-- 如果其他人想做类似的事情,这里是代码
module.exports = function(grunt) {
grunt.registerTask('asyncfoo', 'My "asyncfoo" task.', function() {
// Force task into async mode and grab a handle to the "done" function.
var done = this.async();
// Run some sync stuff.
grunt.log.writeln('Processing task...');
grunt.util.spawn({ cmd: 'node', args: ['S3ListBuckets.js'], opts: {stdio: 'inherit'}});
});
};
!-- 列出桶
var fs = require('fs');
var aws = require('aws-sdk');
aws.config.loadFromPath('./grunt-aws.json');
var s3 = new aws.S3();
s3.listBuckets(function (err, data) {
if (err) {
console.log("Error:", err);
}
else {
for (var index in data.Buckets) {
var bucket = data.Buckets[index];
console.log("Bucket: ", bucket.Name, ' : ', bucket.CreationDate);
}
}
});
答案 建议使用参数 opts: {stdio: 'inherit'}
将生成的输出流式传输到父输出流中。
同一个答案还列出了其他选择:监听数据事件,或根据需要通过管道传输流。
此外,使用超时来等待异步任务也不是一个好主意。如果您正在等待的只是生成的进程,您可以使用回调来了解它何时完成。如果您有更复杂的同步,我建议开始一个新的 Whosebug 问题。
我有一个 g运行t 任务,我想从中 运行 一个节点命令。当我 运行 命令时,该命令没有给出任何错误,但我期待任务的一些控制台输出,我似乎根本没有得到。
为了运行这个节点任务我错过了什么?
grunt.registerTask('asyncfoo', 'My "asyncfoo" task.', function() {
// Force task into async mode and grab a handle to the "done" function.
var done = this.async();
// Run some sync stuff.
grunt.log.writeln('Processing task...');
grunt.util.spawn({ cmd: 'node', args: ['S3ListBuckets.js']});
// And some async stuff.
setTimeout(function() {
grunt.log.writeln('All done!');
done();
}, 1000);
});
!-- 如果其他人想做类似的事情,这里是代码
module.exports = function(grunt) {
grunt.registerTask('asyncfoo', 'My "asyncfoo" task.', function() {
// Force task into async mode and grab a handle to the "done" function.
var done = this.async();
// Run some sync stuff.
grunt.log.writeln('Processing task...');
grunt.util.spawn({ cmd: 'node', args: ['S3ListBuckets.js'], opts: {stdio: 'inherit'}});
});
};
!-- 列出桶
var fs = require('fs');
var aws = require('aws-sdk');
aws.config.loadFromPath('./grunt-aws.json');
var s3 = new aws.S3();
s3.listBuckets(function (err, data) {
if (err) {
console.log("Error:", err);
}
else {
for (var index in data.Buckets) {
var bucket = data.Buckets[index];
console.log("Bucket: ", bucket.Name, ' : ', bucket.CreationDate);
}
}
});
答案 建议使用参数 opts: {stdio: 'inherit'}
将生成的输出流式传输到父输出流中。
同一个答案还列出了其他选择:监听数据事件,或根据需要通过管道传输流。
此外,使用超时来等待异步任务也不是一个好主意。如果您正在等待的只是生成的进程,您可以使用回调来了解它何时完成。如果您有更复杂的同步,我建议开始一个新的 Whosebug 问题。