Grunt:抽象掉一些任务

Grunt: abstracting away some tasks

我有一个项目有很多繁琐的任务,基本上是在构建一个功能齐全的资产管道(转换、源地图、缩小、md5 文件名视觉)。大多数任务都是我在 github 上找到的开源任务,但也有一些是我刚刚在 "inlined" 和 grunt.registerTask 上找到的。

现在我想创建第二个也使用此任务的项目,但我找不到正确的方法来为使用其他任务的 Grunt 创建 npmTask,因为它看起来好像 Grunt 从未为此设计过.如何创建这样的东西?也许 github 上有一些项目做过这样的事情,我可以看看他们的设计?

您需要创建并加载您自己的 grunt 任务 - 这实际上非常简单。

  1. 创建任务 - 官方文档有一个调用其他两个任务的示例:http://gruntjs.com/creating-tasks#custom-tasks。将以下内容放入您的 Gruntfile:

    grunt.registerTask('hello', function() {
      grunt.log.write('hello');
      grunt.task.run(['task1', 'task2'])
    });
    
  2. 然后将该任务移动到它自己的文件和文件夹中(如 tasks/hello.js),并使用包装代码

    'use strict';
    
    module.exports = function(grunt) {
      grunt.registerTask('hello', function() {
        grunt.log.write('hello');
        grunt.config.set('task1.opt1', 1234);
        grunt.task.run(['task1', 'task2'])
      });
    };
    
  3. 然后加载 Gruntfile.js

    中的任务文件夹
    grunt.loadTasks('tasks');