Почему Webpack напрямую импортирует webpack.config.babel.js?

Я новичок в довольно большом проекте ReactJS. На верхнем уровне, он не имеет обычного webpack.config.js, но только `webpack.config.babel.js'. Что этот действительно привыкает, я могу проверить, когда работает

> webpack

вызывается (через npm run с NODE_ENV= разработка и WEBPACK_CONFIG=server_dev², но это не должно иметь большого значения).

Почему это так?

а) Если я удалю этот babel-config, я получу законную жалобу, что:

Файл конфигурации может называться "webpack.config.js" в текущем каталоге.

б) Если вместо этого я добавлю свой собственный "почти ничего" webpack.config.js что действительно "правила" (с webpack.config.babel.js больше не используется).


Итак, по-видимому, есть "невидимый" дефолт webpack.config.js это срабатывает, если этот файл отсутствует. И опять же, по-видимому?, эта конфигурация по умолчанию как-то обслуживает webpack-конфигурацию? Чем? В силу того, что эти узлы-модули установлены?

Или .babelrc какой-нибудь маркерный файл в вебпаке?

Интересно, что этот проект, preact-www Проект имеет то же самое. (ни оригинальная конфигурация webpack, но аромат webpack). Так что они что-то знают, я не...

2 ответа

Решение

Webpack использует interpret загрузить файл конфигурации. Требуется первый файл с базовым именем webpack.config или же webpackfile и любое расширение interpret знает. Кроме того, он отдает приоритет .js файлы.

Найдя конфигурацию, он регистрирует соответствующий компилятор и требует настройки. Особенно в случае .babel.js, он пытается запросить эти три модуля один за другим, пока один из них не будет найден. Если это удастся, babel в основном зацепляет требуемые файлы.

ТЛ; др;

Начиная с версии 3 веб-пакета, вы можете использовать webpack.config.babel.js вместо того же самого без .babel и с радостью положил в него ES6 (любитель import заявления, конст и тд...) сразу.

Допустим, эта функция не является чрезмерно документированной.

Позвольте мне поделиться с вами своими (смутными) исследованиями:

Согласно этому слегка связанному ответу, babel использует интерпретацию, которая "требует зависимостей для файлов конфигурации".

Очевидно, без него webpack не может использовать ES6 для javascript в ваших файлах webpack.config. (А поскольку веб-пакет в основном необходим, для переноса ES6 в ES5 у вас возникнет ужасная проблема курицы и яйца, если веб-пакет сам сконфигурирован, прежде чем потребуется некоторая транспиляция веб-пакета...)

Многие проекты, в том числе популярные, делают это:

  • не имея webpack.config.js
  • используя webpack.config.babel.js содержащий ES6 (контрольный знак: import) а не сразу

Так что, похоже, установившаяся лучшая практика для файлов конфигурации ES6 webpack, тогда? Кажется, что, хотя я не мог найти это в документации веб-пакета, кроме краткого обсуждения функций.

Кстати: упомянутое interpret пакет, по крайней мере, в настоящее время поставляется уже с webpack 3.x. Не нужно ничего дополнительно устанавливать:

/depot/own/webpacktest $ npm ls interpret

  webpacktest@1.0.0 /depot/own/webpacktest
  └─┬ webpack@3.5.6
    └── interpret@1.0.3
Другие вопросы по тегам