Как исключить веб-пакет из пакетов .spec.js файлов

my Package.bundle читает

var reqContext = require.context('./', true, /\.js$/);

reqContext.keys().map(reqContext);

В основном это все .js файлы.

Я хочу, чтобы выражение исключало любые файлы ***. spec.js. Любое regexp здесь, чтобы исключить файлы .spec.js?

Ответ 1

Так как /\.js$/ разрешает все .js файлы (в основном соответствует .js в конце строки), и вам нужно разрешить все .js файлы без .spec перед ними, вам нужно регулярное выражение с отрицательным представлением:

/^(?!.*\.spec\.js$).*\.js$/

Смотрите это демо-версия regex

Подробнее:

  • ^ - начало строки
  • (?!.*\.spec\.js$) - строка не может заканчиваться на .spec.js, если это произойдет, совпадение не произойдет
  • .* - любые символы 0+, отличные от символов очереди строк
  • \.js - .js последовательность
  • $ - конец строки.

Ответ 2

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

Это связано с тем, что webpack только компилирует файлы, являющиеся ссылками, через require или import и поэтому ваши файлы spec.js не будут включены в комплект, так как они не импортируются нигде в реальном коде.