一尘不染

使用api运行grunt任务,无需命令行

node.js

我想在node.js代码中创建并运行grunt任务以供测试使用。

var foo = function() {
    var grunt = require("grunt");

    var options = {"blahblah": null} // ...creating dynamic grunt options, such as concat and jshint
    grunt.initConfig(options);
    grunt.registerTask('default', [/*grunt subtasks*/]);
}

但这是行不通的。Grunt似乎没有执行任何任务。我几乎可以肯定,有一些API可以在没有命令行的情况下在外部运行grunt任务,但是不知道该怎么做。

有什么办法吗?


阅读 277

收藏
2020-07-07

共1个答案

一尘不染

您可以。我不知道为什么任何人都需要做这个,因为目前Grunt是一个 命令行工具警告:我不建议以这种方式运行Grunt。 但是这里是:

var grunt = require('grunt');

// hack to avoid loading a Gruntfile
// You can skip this and just use a Gruntfile instead
grunt.task.init = function() {};

// Init config
grunt.initConfig({
  jshint: {
    all: ['index.js']
  }
});

// Register your own tasks
grunt.registerTask('mytask', function() {
  grunt.log.write('Ran my task.');
});

// Load tasks from npm
grunt.loadNpmTasks('grunt-contrib-jshint');

// Finally run the tasks, with options and a callback when we're done
grunt.tasks(['mytask', 'jshint'], {}, function() {
  grunt.log.ok('Done running tasks.');
});
2020-07-07