我有这个目录结构
├── 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'
任何人都不知道如何使其工作吗?
答案 0 :(得分:0)
chokidar documentation指定ignored
参数为anymatch-compatiable,因此可以通过多种方式完成此操作。
这是一个正则表达式解决方案...
任何index.js
文件,即使在根文件夹中也是如此:
{
ignored: /(^|[\/\\])index\.js$/,
// ...
}
子文件夹中只有index.js
个文件:
{
ignored: /[\/\\]index\.js$/,
// ...
}
还要注意在您的示例中,您使用signoreInitial
是不是一个选择,也许您是说ignoreInitial
?
或者使用回调:
{
ignored: (path) => { return path.endsWith('\\index.js') || path.endsWith('/index.js'); },
// ...
}
答案 1 :(得分:0)
Chokidar似乎有问题,无法忽略MacOS上的文件,这就是我的印象。
因此,在执行操作之前,我要检查文件是否与我要忽略的文件相同。
chokidar
.watch('components', { ignoreInitial: true })
.on('all', (event, filename) => {
filename !== 'index.js'
// action here
})
答案 2 :(得分:0)
在 Mac 上对我有用的是使用 **
:
ignored: ['**/node_modules'],
因此,如果其他选项因错误而不起作用,请选择此选项:
ignored: ['**/index.js'],