В чем разница между watchOptions.ignored и webpack.WatchIgnorePlugin

При использовании webpack с часами, например при использовании webpack-dev-server кажется (по крайней мере) два разных способа исключения файлов из просмотра. Я не могу найти документацию о разнице между этими двумя конфигурациями и почему они разные. Кто-нибудь знает почему? Один метод предпочтителен? Должен ли я открыть вопрос и/или запрос на извлечение для улучшения документации?

Случай, с которым я недавно столкнулся, когда часы запускались несколько раз при первом запуске, был исправлен добавлением watchIgnorePlugin и не исправлен watchOptions.ignored

webpack.WatchIgnorePlugin

Игнорируйте указанные файлы, т.е. те, которые соответствуют указанным путям или регулярным выражениям, в режиме просмотра.

new webpack.WatchIgnorePlugin(paths)

Опции

  • paths (массив): список RegExps или абсолютных путей к каталогам или файлам, которые следует игнорировать.

https://webpack.js.org/plugins/watch-ignore-plugin/

watchOptions.ignored

Для некоторых систем просмотр многих файловых систем может привести к большой загрузке ЦП или памяти. Можно исключить огромную папку, такую как node_modules:

 ignored: /node_modules/

Также можно использовать любые шаблоны соответствия:

 ignored: "files/**/*.js"

https://webpack.js.org/configuration/watch/

Ответ 1

WatchIgnorePlugin -plugin поддерживает список RegExps или абсолютных путей к каталогам или файлам, которые следует игнорировать.

watchOptions.ignored -option поддерживает anymatch -patterns, который включает в себя регулярное выражение, глобус, строку или функцию, которая принимает строку в качестве аргумента и возвращает значение true или false.

Если вы работали в Windows, это могло быть причиной того, что watchOptions.ignored не работал для вас:

Примечание: этот модуль имеет четность Bash, имейте в виду, что обратные слеши в стиле Windows не поддерживаются в качестве разделителей. См. Https://github.com/micromatch/micromatch#backslashes для получения дополнительной информации.