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

javascript regex to ignore sub directories for chokidar

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

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

我真的很费劲想弄清楚如何正确地实施正则表达式来做到这一点。不幸的是,创建的目录是随机的,并且事先不知道名称。这甚至可以做到吗?

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

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