почему babel-loader является частью webpack, а не самим babel? - PullRequest
2 голосов
/ 30 мая 2020

Я изучаю, как работает система сборки в JavaScript. Если babel-loader - это транспилятор, который переводит React в JavaScript, почему он является частью плагина webpack?

Разве transpiling и bundling не являются отдельными процессами?

А есть ли ресурс, который подробно объясняет, как все эти фреймворки сочетаются друг с другом и как заставить систему сборки работать? Кажется, я нахожу только общий обзор в официальных документах.

1 Ответ

1 голос
/ 31 мая 2020
  • Webpack - это «сборщик модулей». Сам по себе он не изменяет источник программы (обратите внимание: здесь есть некоторые предостережения, например, минификация), а только объединяет все различные биты большой кодовой базы вместе для более простой и эффективной доставки через Inte rnet ( в зависимости от варианта использования; вы можете объединять серверный код, и в этом случае преимущества в основном связаны с возможностью консолидации инструментов сборки).
  • Загрузчик веб-пакетов используется для обработки файлов во время объединения. Он указан c для webpack (вы не будете использовать babel-loader без webpack, за исключением, возможно, случаев взаимодействия с другими инструментами сборки, но даже тогда он не будет использоваться сам по себе).
  • В конфигурации веб-пакета указывается сопоставление расширений файлов с загрузчиками веб-пакетов. Например, распространенный случай - обработка файлов .ts с использованием ts-loader. Таким образом, веб-пакет будет передавать файлы с расширением .ts компилятору TypeScript и использовать вывод этой компиляции в пакете вместо исходной программы.
  • Babel - компилятор; он берет программу ESNext и создает эквивалентную программу, совместимую с ES3 +.
  • babel-loader делает то, что ts-loader делает для TypeScript; передает файлы компилятору Babel и возвращает результат для использования в пакете вместо исходной исходной программы.

    Да. Вот почему у нас есть «webpack the bundler» и «Babel the compiler / transpiler», и babel-loader для их соединения. Без babel-loader webpack не смог бы обрабатывать файлы через Babel.

    Надеюсь, что это поможет.

...