как игнорировать файлы в подкаталогах с помощью chokidar - PullRequest
1 голос
/ 07 июля 2019

У меня есть эта структура каталогов

├── 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'

У кого-нибудь есть идеи, как заставить его работать?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Чокидар, похоже, прослушивается, он не может игнорировать файлы в MacOS, у меня такое впечатление.

Поэтому, прежде чем выполнить свое действие, я проверяю, является ли файл тем же, который я хочу игнорировать.

chokidar
  .watch('components', { ignoreInitial: true })
  .on('all', (event, filename) => {
    filename !== 'index.js'
    // action here
  })
0 голосов
/ 08 июля 2019

В документации chokidar указано, что параметр ignored совместим с anymatch , поэтому его можно выполнить разными способами.

Вот решение с регулярным выражением...

Любой файл index.js, даже в корневой папке:

{
    ignored: /(^|[\/\\])index\.js$/,
    // ...
}

Только index.js файл в подпапке:

{
    ignored: /[\/\\]index\.js$/,
    // ...
}

Также обратите внимание, что в вашем примере вы используете signoreInitial, это не вариант, возможно, вы имели в виду ignoreInitial?


В качестве альтернативы с обратным вызовом:

{
    ignored: (path) => { return path.endsWith('\\index.js') || path.endsWith('/index.js'); },
    // ...
}
...