私はGruntにかなり慣れていないので、これは非常に基本的な質問かもしれません. 次のような Gruntfile.js があります。
/*global module:false*/
module.exports = function (grunt) {
grunt.initConfig({
});
grunt.registerTask('default', 'measureText');
grunt.registerTask('measureText', 'Measures size of text', function() {
grunt.log.writeln('========================================================================');
grunt.log.writeln('= output of ImageMagick should be on next line: =');
var im = require("node-imagemagick");
im.identify(['-format', '%wx%h', 'build/text.png'], function(err, output){
if (err) throw err;
console.log('dimension: '+output); // <-- NOTHING WRITTEN!
});
grunt.log.writeln('========================================================================');
return;
});
};
ご覧のとおり、node-imagemagickメソッドの identify を呼び出して、画像 (build/text.png) の幅と高さを取得しています。上記の grunt スクリプトを実行すると、identify() コールバックからの出力がありません。(上記の console.log 行です)。
しかし、Node スクリプト (test-node-imagemagick.js など) を作成して同じコードをテストすると、問題なく動作します。
#!/usr/bin/env node
var im = require("node-imagemagick");
im.identify(['-format', '%wx%h', 'build/text.png'], function(err, output){
if (err) throw err;
console.log('dimension: '+output);
});
では、Grunt タスク内から Node パッケージを呼び出して、戻り値を取得するにはどうすればよいでしょうか?
ちなみに、私は次のようにしてパッケージをインストールしました:
$ npm install node-imagemagick
... Gruntfile.js を含むディレクトリから。
ありがとう!