Как исключить веб-пакет из пакетов .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
не будут включены в комплект, так как они не импортируются нигде в реальном коде.