如何使用chokidar忽略子目录中的文件
how to ignore files within subdirectories using chokidar
我有这个目录结构
├── components
│ ├── quarks
│ │ └── index.js
│ │ └── ...
│ ├── bosons
│ │ └── index.js
│ │ └── GridLayout.vue
│ │ └── ...
│ ├── atoms
│ │ └── ButtonStyle.vue
│ │ └── InputStyle.vue
│ │ └── index.js
│ │ └── ...
│ ├── .......
└─────
我想忽略每个文件夹中的 index.js
,但我不明白,我已经尝试了多种方法
const path = require('path')
const chokidar = require('chokidar')
const ROOT_PATH = path.resolve('components')
const watcher = chokidar.watch(ROOT_PATH, {
ignored: ROOT_PATH + '/*/index.js', //does not work
ignoreInitial: true
})
已经尝试过:
'./components/**/index.js'
,
'./components/*/index.js'
,
'components/*/index.js'
,
'components/**/index.js'
,
'ROOT_PATH + '/**/index.js'
有人知道如何让它发挥作用吗?
chokidar documentation specifies that the ignored
parameter is anymatch-compatiable所以这可以通过多种方式完成。
这是一个正则表达式解决方案...
任何 index.js
文件,即使在根文件夹中:
{
ignored: /(^|[\/\])index\.js$/,
// ...
}
sub-folder 中只有 index.js
个文件:
{
ignored: /[\/\]index\.js$/,
// ...
}
另请注意,在您的示例中您使用了 signoreInitial
这不是一个选项,也许您的意思是 ignoreInitial
?
或者回调:
{
ignored: (path) => { return path.endsWith('\index.js') || path.endsWith('/index.js'); },
// ...
}
Chokidar 似乎有问题,无法在 MacOS 上忽略文件,这就是我的印象。
因此,在 运行 我的操作之前,我正在检查该文件是否与我要忽略的文件相同。
chokidar
.watch('components', { ignoreInitial: true })
.on('all', (event, filename) => {
filename !== 'index.js'
// action here
})
在 Mac 上对我有用的是使用 **
:
ignored: ['**/node_modules'],
因此,如果其他选项由于错误而不起作用,请选择这个:
ignored: ['**/index.js'],
我有这个目录结构
├── components
│ ├── quarks
│ │ └── index.js
│ │ └── ...
│ ├── bosons
│ │ └── index.js
│ │ └── GridLayout.vue
│ │ └── ...
│ ├── atoms
│ │ └── ButtonStyle.vue
│ │ └── InputStyle.vue
│ │ └── index.js
│ │ └── ...
│ ├── .......
└─────
我想忽略每个文件夹中的 index.js
,但我不明白,我已经尝试了多种方法
const path = require('path')
const chokidar = require('chokidar')
const ROOT_PATH = path.resolve('components')
const watcher = chokidar.watch(ROOT_PATH, {
ignored: ROOT_PATH + '/*/index.js', //does not work
ignoreInitial: true
})
已经尝试过:
'./components/**/index.js'
,
'./components/*/index.js'
,
'components/*/index.js'
,
'components/**/index.js'
,
'ROOT_PATH + '/**/index.js'
有人知道如何让它发挥作用吗?
chokidar documentation specifies that the ignored
parameter is anymatch-compatiable所以这可以通过多种方式完成。
这是一个正则表达式解决方案...
任何 index.js
文件,即使在根文件夹中:
{
ignored: /(^|[\/\])index\.js$/,
// ...
}
sub-folder 中只有 index.js
个文件:
{
ignored: /[\/\]index\.js$/,
// ...
}
另请注意,在您的示例中您使用了 signoreInitial
这不是一个选项,也许您的意思是 ignoreInitial
?
或者回调:
{
ignored: (path) => { return path.endsWith('\index.js') || path.endsWith('/index.js'); },
// ...
}
Chokidar 似乎有问题,无法在 MacOS 上忽略文件,这就是我的印象。
因此,在 运行 我的操作之前,我正在检查该文件是否与我要忽略的文件相同。
chokidar
.watch('components', { ignoreInitial: true })
.on('all', (event, filename) => {
filename !== 'index.js'
// action here
})
在 Mac 上对我有用的是使用 **
:
ignored: ['**/node_modules'],
因此,如果其他选项由于错误而不起作用,请选择这个:
ignored: ['**/index.js'],