G运行t - 在前一个任务完成后将任务排队到 运行

Grunt - Queueing a task to run after a previous task completes

我在这里查看了官方的 G运行t 创建任务的文档

http://gruntjs.com/creating-tasks

我有两个任务想做,但第二个任务要等到第一个任务完成后才能 运行。那是因为第二个任务从第一个任务中获取输出并使用它来创建新的输出。

分解

我的项目涉及到Bootstrap,所以有很多没用到的代码。我的第一个 objective 是用 uncss 删除未使用的代码。然后我会从这个新的 css 文件中获取输出并用 cssmin.

缩小它

这是来自 g运行tjs

的确切示例
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('default', 'uncss', function() {
    grunt.task.run('cssmin');
});

意思是输入grunt时,默认先运行uncss任务,等它完成,再运行cssmin 任务。但是我得到了这个输出

Running "default" task

Running "cssmin:css" (cssmin) task

1 file created. 3.38kb -> 2.27kb

Done, without errors

这是我的 initConfig

uncss: {
    dist: {
        files: {
            'directory/assets/stylesheets/tidy.css': ['directory/*.html', 'directory/views/*.html']
            }
        }
    },
    
    cssmin: {
        css: {
            files: {
                'directory/assets/stylesheets/styles.min.css': ['directory/assets/stylesheets/styles.css']
            }
        }
    }

换句话说,我的文件夹中有两个样式表。一个包含我创建的自定义样式,另一个包含 Bootstrap 缩小。通过运行宁uncss,我将得到一个名为tidy.css.

的新css文件

cssmin 任务应该查找此 tidy.css 文件并将其缩小,从而生成一个新的 styles.min.css 文件。

我可以让它工作,但我必须手动 运行 一项任务然后 运行 另一项任务。我如何自动执行此操作以使它们按顺序 运行

首先,最佳做法是使用 npm 包自动加载所有任务:

// Load grunt tasks automatically
  require('load-grunt-tasks')(grunt);

这里有两个 g运行t 任务:

one: {
      wake up...
    },

two: {
      dress up...
    },

这就是你如何运行一个接一个

grunt.registerTask('oneThenOther', [
    'one',
    'two'
  ]);

你很接近。在注册您的 alias task 时,按您希望的顺序传递一组任务,而不是单个任务。

grunt.registerTask('default', ['uncss', 'cssmin']);

或者,可以通过 CLI 指定序列:

> grunt uncss cssmin

原来部分问题是我在 cssmin 下指定了错误的文件。

将我的 cssmin 配置更改为

cssmin: {
    css: {
        files: {
            'directory/assets/stylesheets/styles.min.css': ['directory/assets/stylesheets/tidy.css']
            }
        }
    }

然后在数组中注册任务就解决了

grunt.registerTask('default', ['uncss', 'cssmin']);

请注意,必须按该顺序指定任务。