2016-12-05 26 views
2

現在、Chokidarを使用してファイル構造でファイルを監視しています。特定のディレクトリを監視する必要がありますが、そのディレクトリに作成されているサブディレクトリは無視されます。例えばchokidarのサブディレクトリを無視するjavascriptの正規表現


/var/app/current/somedir

私はsomedirで作成されたファイルを見てしまいます。しかしディレクトリsomedirに作成された場合、再帰的に無視したいので、その下に作成されたものもすべて無視します。私はこれを適切に行うための正規表現を実装する方法を把握するために

chokidar.watch(configuration.theDir, { 
     ignored: `/\\var\\app\\current\\somedir\\<match anything here, except other directories!>\\<anything here would be ignored and further down...>/`, 
     awaitWriteFinish: { 
      stabilityThreshold: 2000, 
      pollInterval: 100 
     } 
}).on('add', (file, details) => { 
    // console.log(file, path); 
}); 

闘争は本当です。残念なことに、作成されるディレクトリはランダムであり、その名前はあらかじめわかっていません。これも可能ですか?

答えて

1

この正規表現は、がディレクトリであるか、またはベースのサブディレクトリ(スラッシュ/で定義されたディレクトリ)に属するすべてと一致します。ご例えば

、ベースは次のとおりです。/var/app/current/somedir

正規表現:/^\/var\/app\/current\/somedir\/.*[\/].*$/i

テスト:

var tests = [ 
    '/var/app/current/somedir/fileOrFolder.txt', 
    '/var/app/current/somedir/fileOrFolder/', 
    '/var/app/current/somedir/fileOrFolder/ssads/sad.s', 
    '/var/app/current/somedir/fileOrFolder.sd/sdasda.asda/', 
    '/var/app/current/somedir/fileOrFolder.txt', 
    '/var/app/current/somedir/fileOrFolder' 
] 

for (var ii = 0, nn = tests.length; ii < nn; ii++) 
{ 
    if (/^\/var\/app\/current\/somedir\/.*[\/].*$/i.test(tests[ii])) 
    { 
     console.log('"'+tests[ii]+'"', 'Matched, so ignored.'); 
    } 
    else 
    { 
     console.log('"'+tests[ii]+'"', 'Not matched, so watch.'); 
    } 
} 

はJavaScriptコンソールで次のように出力されます

/* 
* "/var/app/current/somedir/fileOrFolder.txt" Not matched, so watch. 
* "/var/app/current/somedir/fileOrFolder/" Matched, so ignored. 
* "/var/app/current/somedir/fileOrFolder/ssads/sad.s" Matched, so ignored. 
* "/var/app/current/somedir/fileOrFolder.sd/sdasda.asda/" Matched, so ignored. 
* "/var/app/current/somedir/fileOrFolder.txt" Not matched, so watch. 
* "/var/app/current/somedir/fileOrFolder" Not matched, so watch. 
*/ 
+1

ああ男はあなたに感謝しますそんなに!!それでおしまい! – dvsoukup

関連する問題