Я довольно новичок в Grunt, так что это может быть довольно простой вопрос. У меня есть Gruntfile.js, который выглядит следующим образом:Получение результата из сценария узла в задаче Grunt
/*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 идентификации, чтобы получить ширину и высоту изображения (строительство/text.png). Когда я запускаю свой скрипт grunt, нет выхода из callback ident(). (Это строка console.log выше).
Однако, если я создаю сценарий узла (например, 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);
});
Как я могу назвать пакеты Node из задач Grunt и получить возвращаемые значения?
Кстати, я установить пакет, выполнив:
$ npm install node-imagemagick
... из каталога, содержащего Gruntfile.js.
Спасибо!
Спасибо для ловли, но это было только потому, что я пытался несколько вещей, в то время очистки файла на тест-случае. Я проверил, и пакет «node-imagemagick» - это просто вилка «imagemagick». Если я исправлю их, чтобы они были «node-imagemagick». Я обновлю свой оригинальный вопрос, чтобы избежать путаницы. – antun
было бы неплохо поместите ваш require() выше функции grunt в верхней части файла, а не в пределах регистрации задачи. Кроме того, вместо того, чтобы бросать ошибку, попробуйте вывести ее в stderr с помощью console.error() или grunt.log.error() – sctskw
Спасибо за предложение. Я попытался переместить строку var im = require ("node-imagemagick") в начало (справа внутри module.exports = function (grunt) {), но результат тот же. Я также попробовал написав console.log (err), а также grunt.log.writeln (err), но ни одна из них не сообщила о какой-либо ошибке. Кроме того, im является действительным экземпляром объекта ImageMagick, если я делаю console.log (im) . – antun