繁体   English   中英

javascript正则表达式忽略chokidar的子目录

[英]javascript regex to ignore sub directories for chokidar

目前使用Chokidar在文件结构上进行文件监视。 我需要观察特定目录,但忽略在该目录中创建的任何子目录。

例如,
/var/app/current/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);
});

我想弄清楚如何正确实现正则表达式来实现这一目标。 不幸的是,创建的目录是随机的,并且事先不知道名称。 这甚至可能吗?

此正则表达式将匹配目录中的所有内容或属于基类的子目录 (由以下斜杠/定义的目录)。

对于您的示例,基数为: /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.
*/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM