2013-12-11 58 views
0

這可能是一個FAQ,但瀏覽文檔沒有幫助,我放棄了。羣組相關的grunt任務配置在一起

我必須運行一個涉及使用其他幾個grunt任務的咕task任務。這些任務中的每一個都必須進行不同的配置。事情是這樣的:

grunt.initConfig({ 
    clean : { 
     task1 : ["task1"], 
     task2 : ["task2"] 
    }, 
    mkdir : { 
     task1 : { 
      options : { 
       create : ["task1"] 
      } 
     }, 
     task2 : { 
      options : { 
       create : ["task2"] 
      } 
     } 
    } 
}); 

... 

grunt.registerTask("task1", ["clean:task1", "mkdir:task1"]); 
grunt.registerTask("task2", ["clean:task2", "mkdir:task2"]); 

我可以用做的工作:

grunt task1 

這工作得很好,但我不明白爲什麼「獨立寫作」的各個步驟都必須驅散了所有配置。此外,如果我有很多這樣的任務,我的構建文件將變得不可靠。

所以我的問題:

  • 在繁重的說法

    ,我應該叫 「獨立寫作」?這是一項任務嗎?我應該怎樣稱呼「mkdir:task1」?是一個子任務嗎?任務配置?

  • 如何在這種情況下組織我的gruntfile?我需要爲「task1」創建一個不同的npm項目嗎?這個項目將如何看待(不要猶豫,指着一個完整的grunt noob編寫這樣的任務的指南,我很想閱讀任何超越'這是我的巨大而不可或缺的gruntfile來觀看文件,這不是很好嗎? )

感謝

回答

0
在繁重的說法

,我應該叫 「獨立寫作」?這是一項任務嗎?我應該怎樣稱呼「mkdir:task1」?是一個子任務嗎?任務配置?

什麼是task1?您是否將視圖構建到HTML中?你是concat/minifying腳本嗎?任務名稱可能是buildviewscompress。沒有真正的正確或錯誤的方式來命名你的任務,我建議只是描述性的。

如何在這種情況下組織我的gruntfile?我需要爲「task1」創建一個不同的npm項目嗎?這個項目將如何看待(不要猶豫,指着一個完整的grunt noob編寫這樣的任務的指南,我很想閱讀任何超越'這是我的巨大而不可或缺的gruntfile來觀看文件,這不是很好嗎? )

不,你不需要一個不同的npm項目。您似乎正在爲您需要執行的操作定義不同的配置選項。舉例來說,如果你有一個rsync任務,您可能有不同的選擇分期和生產像我一樣在這裏:

rsync: { 
     staging: { 
      files: 'public/', 
      options: { 
       host: "mystaginghost.com", 
       remoteBase: "/page.com/htdocs", 
      } 
     }, 
     styles: { 
      files: 'public/stylesheets/', 
      options: { 
       host: "myproductionhost.com", 
       remoteBase: "/production.com/htdocs/public/stylesheets/", 
      } 
     }, 
    }, 

我可以通過調用命令行grunt rsync:staging個別地引用這些任務或將我的任務設置爲包含rsync:staging

我建議瀏覽示例Gruntfiles以真正理解如何構建你的。

兩個好的是semantic-ui'sone from yeoman backbone generator

+0

我的意思是「你叫什麼東西就像我稱之爲'task1'的東西」。當然,在現實生活中,它會像「包裝」一樣,它會有幾個步驟,每個步驟都對應於一個咕嚕任務的特定配置。 – phtrivier

+0

我的問題是:如果我有十個這樣的「進程」,每個進程使用許多不同的grunt-task配置,配置將在我的Gruntfile中進行調整,對吧?可讀性/維護性不是很差嗎? – phtrivier

+0

例如,使用語義UI的Gruntfile,假設我想了解「grunt docs」的作用;我必須在第90行(子任務列表),第465行(第一次使用'copy'),第239行(使用autoprefix),然後328(第二次使用'copy')之間導航,然後266 (使用'docco')等等......聽起來不像是有趣的:( – phtrivier

0

如果你有很多類似的任務序列,那麼你可以用一個函數註冊一個任務,該函數接受你發送給它的參數,而不是讓你有10個任務。這將要求你的目標遵循一個通用的命名約定。