2016-02-12 162 views
0

我看着官方咕噜文档创建任务在这里咕噜 - 排队任务前一个任务后运行完成

http://gruntjs.com/creating-tasks

我有我想要做的两个任务,但第二个不能一直运行到第一个完成后。这是因为第二个任务从第一个任务获得输出并使用它创建新的输出。

要打破它

我的项目涉及到引导,所以它有很多的未使用的代码。我的第一个目标是用uncss删除未使用的代码。然后,我会从这个新的CSS文件的输出,并用cssmin缩小它。

这里是从gruntjs确切的例子

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任务。不过,我得到这个输出

运行 “默认” 任务

运行 “cssmin:CSS”(cssmin)任务创建

1文件。 3.38kb - > 2.27kb

进行的,没有错误

这里是我的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文件。

我可以得到这个工作,但我必须手动运行一个任务,然后运行另一个。我如何可以自动完成这一让他们按顺序运行

回答

1

第一,最好的做法是使用NPM包来自动加载的所有任务:

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

这里有两个咕噜任务:

one: { 
     wake up... 
    }, 

two: { 
     dress up... 
    }, 

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

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

您有最详细的回复。你的答案被接受 –

1

你很近。当注册您的alias task时,您需要按顺序传递一组任务,而不是单个任务。

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

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

> grunt uncss cssmin 
+0

这也有帮助。你会得到一个upvote。欢迎来到SO! –

0

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

更改我的cssmin config来

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

,然后在阵列注册任务解决它

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

注意,任务必须按照这个顺序来指定。