javascript正则expression式忽略chokidar的子目录

目前使用Chokidar在文件结构上进行文件监视。 我有一个要求观看一个特定的目录,但忽略在该目录中创build的任何子目录。

例如,
/var/app/current/somedir

我会观看在somedir中创build的任何文件 。 但是,如果一个目录是在somedir中创build的,那么我想要recursion地忽略它,因此也忽略了在它下创build的任何东西。

 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); }); 

斗争是真实的,我想出如何正确实施一个正则expression式来做到这一点。 不幸的是,创build的目录是随机的,名称是事先不知道的。 这甚至有可能吗?

这个正则expression式将匹配所有的目录或属于基地的子目录 (由下面的斜杠/定义的目录)。

对于你的例子,基地是: /var/app/current/somedir

正则expression式:/ /^\/var\/app\/current\/somedir\/.*[\/].*$/i

testing:

 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. */