2013-10-21 84 views
17

Gruntfile.js,我有:Gruntfile.js路徑中的{{*}}是什麼意思?

watch: { 
    styles: { 
     files: [ 
     '<%= yeoman.app %>/styles/{,*/}*.less' 
     ], 
     tasks: ['copy:styles', 'autoprefixer'] 
    } 
} 

對於路徑,這是什麼意思{,*/}確實?它與使用雙星號**/有什麼不同?

回答

13

該模式在yeoman模板中被廣泛使用:它意味着在文件夾層次結構中只查看一個層次。它主要用於性能方面的原因,因爲同時觀看太多文件可能會很慢(甚至不可能)。

+0

謝謝。你有沒有參考性能問題? –

+0

https://github.com/yeoman/generator-webapp/pull/20例如 – vkurchatkin

+0

感謝您的參考,但似乎更關心的是文件監視的總數,而不考慮目錄的深度。 –

11

我相信你在那裏使用minimatch pattern

雙星號是導致遞歸到子目錄的glob。

單個星號只匹配當前目錄中的0個或更多字符(它匹配除斜槓字符以外的每個字符)。

例如,a/**/d將匹配a/b/c/d。

27

這些globbing patterns的咕嚕,由node-globminimatch庫支持。

基本上是:

  • *任意數目的字符,但不/
  • **匹配任何數目的字符,包括/,只要它是在一個道部分的唯一匹配
  • {}允許用逗號分隔的「或」表達式列表

所以,styles/{,*/}*.less以下文件匹配:

  • LESS文件內styles目錄
  • 直接子目錄styles目錄(但沒有更深)
LESS文件
+0

這是更正確的解釋 – Willa

+0

謝謝!爲我節省2個小時。 ;) –

0

答案是globbing-patterns

其他答案已經回答了{,*/}*是什麼意思。

但是**/{,*/}*之間的差異是文件夾深度

  • /styles/{,*/}*.less已被劃分成兩個情況

    1. /styles/*.less
    2. /styles/*/*.less

例如

/styles/{,*/}*.less將匹配/styles/x.less(1情況)

/styles/{,*/}*.less還將匹配/styles/test/x.less(2)的情況

/styles/{,*/}*.less無法比擬/styles/test/test1/x.less

/styles/**/*.less可以特別提到了約曼做

相關問題