加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Grunt 自定义任务

发布时间:2023-05-11 14:05:12 所属栏目:教程 来源:
导读:你可以和任务一起疯狂。如果你的任务并没有遵循 "多任务" 结构,那就使用自定义任务。

grunt.registerTask('default', 'My "default" task description.', function() {
grunt.log.writeln(&#
你可以和任务一起疯狂。如果你的任务并没有遵循 "多任务" 结构,那就使用自定义任务。

grunt.registerTask('default', 'My "default" task description.', function() {
  grunt.log.writeln('Currently running the "default" task.');
});
在一个任务内部,你可以执行其他的任务。

grunt.registerTask('foo', 'My "foo" task.', function() {
  // Enqueue "bar" and "baz" tasks, to run after "foo" finishes, in-order.
  grunt.task.run('bar', 'baz');
  // Or:
  grunt.task.run(['bar', 'baz']);
});
任务也可以是异步的。

grunt.registerTask('asyncfoo', 'My "asyncfoo" task.', function() {
  // Force task into async mode and grab a handle to the "done" function.
  var done = this.async();
  // Run some sync stuff.
  grunt.log.writeln('Processing task...');
  // And some async stuff.
  setTimeout(function() {
    grunt.log.writeln('All done!');
    done();
  }, 1000);
});
任务也可以访问它们自身名称和参数。

grunt.registerTask('foo', 'My "foo" task.', function(a, b) {
  grunt.log.writeln(this.name, a, b);
});
 
// 用法:
// grunt foo foo:bar
//   logs: "foo", undefined, undefined
//   logs: "foo", "bar", undefined
// grunt foo:bar:baz
//   logs: "foo", "bar", "baz"
如果记录到任何错误,那么任务就会失败。

grunt.registerTask('foo', 'My "foo" task.', function() {
  if (failureOfSomeKind) {
    grunt.log.error('This is an error message.');
  }
 
  // 如果这个任务出现错误则返回false
  if (ifErrors) { return false; }
 
  grunt.log.writeln('This is the success message');
});
当任务失败时,所有后续任务都将终止,除非指定 --force 。

grunt.registerTask('foo', 'My "foo" task.', function() {
  // Fail synchronously.
  return false;
});
 
grunt.registerTask('bar', 'My "bar" task.', function() {
  var done = this.async();
  setTimeout(function() {
    // Fail asynchronously.
    done(false);
  }, 1000);
});
任务还可以依赖于其他任务的成功执行。注意 grunt.task.requires 并不会真正的运行其他任务,它仅仅检查其它任务是否已经执行,并且没有失败。

grunt.registerTask('foo', 'My "foo" task.', function() {
  return false;
});
 
grunt.registerTask('bar', 'My "bar" task.', function() {
  // 如果"foo"任务运行失败或者没有运行则任务失败。
  grunt.task.requires('foo');
  // 如果"foo"任务运行成功则执行这里的代码。
  grunt.log.writeln('Hello, world.');
});
 
// 用法:
// grunt foo bar
//   没有输出,因为"foo"失败。
// grunt bar
//   没有输出,因为"foo"从未运行。
如果任务需要的配置属性不存在,其也可能失败。

grunt.registerTask('foo', 'My "foo" task.', function() {
  // Fail task if "Meta.name" config prop is missing
  // Format 1: String 
  grunt.config.requires('Meta.name');
  // or Format 2: Array
  grunt.config.requires(['Meta', 'name']);
  // Log... conditionally.
  grunt.log.writeln('This will only log if Meta.name is defined in the config.');
});
任务还可以访问配置属性。

grunt.registerTask('foo', 'My "foo" task.', function() {
  // 记录属性值,如果属性未定义(undefined)则返回null。
  grunt.log.writeln('The Meta.name property is: ' + grunt.config('Meta.name'));
  // 同样的记录属性值,如果属性未定义(undefined)则返回null。
  grunt.log.writeln('The Meta.name property is: ' + grunt.config(['Meta', 'name']));
});

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章