Почему 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