0

ファイル関連の API のコールバック内にある console.logs は、CLI に何も表示されません。

module.exports = function (grunt) {

    var path = require("path"),
        fs = require("fs"),
        gm = require("gm");
    grunt.registerMultiTask("imagesizeslist", "Generate image sizes list", function () {
        var files = grunt.file.expandFiles(this.file.src);
        grunt.helper('imagesizeslist', files);
    });

    //  grunt.log.write(contents);


    grunt.registerHelper('imagesizeslist', function (files) {
        files.forEach(function (file) {
            basename = path.resolve(file);
            var exec = require('child_process').exec,
            child;
            //using sips
            console.log('sips "'+basename+'" -g pixelHeight');
            child = exec('sips "'+basename+'" -g pixelHeight',
              function (error, stdout, stderr) {
                  console.log(error);
                console.log('stdout: ' + stdout);
            });
            // using gm
            gm(basename).size(function (err, size) {
                if (!err)
                    console.log(size.width > size.height ? 'wider' : 'taller than you');
                else
                    console.log("test");
                console.log(size);
            });
        });
    });
};
4

1 に答える 1

1

メソッドは非同期であるため、exec()grunt にそのことを伝え、完了したら非同期コールバックを実行する必要があります。それはドキュメントにあります:非同期タスクが完了しないのはなぜですか?

于 2012-09-04T09:50:47.343 に答える