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.
*/
目前正在使用 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.
*/