在Grunt registerTask中使用npm模块

时间:2016-09-22 11:42:46

标签: npm gruntjs

我想在新任务上使用npm模块,但我没有结果:

  grunt.registerTask('done', function () {

    var prepend = require('prepend');

    var file = 'app.bundleES6.js',
        string = '// My string';

    prepend(file, string, function(error) {
      if (error)
        console.error(error.message);
      else
        console.log('Yeah');
    });

  });

当我运行grunt done时,我没有看到console.log,只是:

Running "done" task

Done, without errors.

你知道如何在Grunt registerTask上使用npm模块吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的任务的问题在于它是异步的。

您可以注册异步Grunt任务,但是必须调用this.async()来获取完成回调,并且必须在任务完成时调用回调(如果任务失败则传递false )。

像这样:

grunt.registerTask('done', function () {

  var callback = this.async();
  var prepend = require('prepend');

  var file = 'app.bundleES6.js',
      string = '// My string';

  prepend(file, string, function(error) {
    if (error) {
      console.error(error.message);
      callback(false);
    }
    else {
      console.log('Yeah');
      callback();
    }
  });
});