2014-11-09 93 views
2

想象一下下面的目錄結構:dir/*,dir/**,dir/**/*,dir /**/*.*在globbing中有什麼區別?

web/ 
    sub1/ 
    1.js 
    3.js 

當我使用「刪除」節點模塊,刪除文件或目錄,而 行爲dir/* , dir/**, dir/**/*, dir/**/*.*是不同的。

web/* 

德爾([ 'web/*', '網/ SUB1/1.js!'])
- >下幅一切/移除,網絡/ SUB1/1.js被移除以及
德爾([ 'web/*', '網/ 3.js!']})
- >下幅材以外的所有3.js被移除/被依然古色古香

web/** 

德爾([ 'web/**',「! web/sub1/1.js']),del(['web/**','!web/3.js'])
- >所述的兩種形式的結果是相同的,網/被完全去除

web/**/* 

德爾([ 'web/**/*', '網/ SUB1/1.js!'])
- >下一切信息網/除去
德爾([ 'web/**/*', '網/ 3.js!']})
- >一切下網/除3.js被去除依然古色古香

web/**/*.* 

德爾([ 'web/**/*.*','!web/sub1/1.js'])
- >除web/sub/1.js以外的所有文件被刪除,目錄結構保存爲 del(['web/**/*.*','!web/3.js']})
- >所有文件在web /下除3.js和目錄結構被刪除

完成上述測試後,我完全糊塗了,我無法總結出上述測試中的一條規則。我無法找到解釋這些問題的詳細文檔。 有人可以幫忙嗎?

回答

0

節點del使用node-glob來匹配目標,使用rimraf去除匹配的目標。所有匹配的目標將被傳遞到rimraf,rimraf將刪除文件或將遞歸刪除目錄。所以你的問題的答案是你的模式匹配的目標是什麼。

網/ *

所有子項匹配:web/sub1web/3.js。所有將被刪除,!web/sub1/1.js不排除任何東西。但!web/3.js不包括該文件,因此只有web/sub1將被遞歸移除。

網/ **

目錄和所有嵌套項匹配:webweb/sub1web/sub1/1.jsweb/3.js。因爲該目錄將被遞歸刪除,所以任何文件排除都不是有效的。

網/ **/*

所有嵌套項目匹配:web/sub1web/sub1/1.jsweb/3.js。將遞歸移除web/sub1,排除!web/sub1/1.js無所謂。但排除!web/3.js保留該文件。

網絡/**/*.*

只有嵌套文件匹配:web/sub1/1.jsweb/3.js。所以沒有目錄將被刪除,排除文件保留它。