2016-02-12 164 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']); 

注意,任務必須按照這個順序來指定。