Почему babel-loader с typescript вставляет зависимости в бандл тогда как ts-loader нет?

Вопрос, почему babel-loader вставляет зависимости в бандл, а ts-loader нет, можно объяснить различием в подходе и назначении этих двух загрузчиков.

babel-loader и ts-loader являются двумя разными загрузчиками для Webpack, предназначенными для обработки кода JavaScript и TypeScript соответственно.

babel-loader используется для преобразования современного синтаксиса JavaScript, такого как ES6 и выше, в код, который может быть понятным для более старых браузеров или сред исполнения. Babel выполняет так называемый транспиляцию, при которой код на современном синтаксисе преобразуется в эквивалент на более старом языке.

С другой стороны, ts-loader предназначен для обработки кода TypeScript, который является надмножеством JavaScript, добавляя статическую типизацию и дополнительные функции языка.

Одной из функций TypeScript является возможность импортировать и использовать типы из внешних модулей, которые объявлены в определенных зависимостях (например, в @types/библиотеки или в самом коде проекта).

babel-loader, по умолчанию, не обрабатывает такие зависимости типов и не добавляет их в собранный бандл. Это происходит потому, что babel-loader не является TypeScript-специфичным загрузчиком и не обладает полным пониманием всей специфики TypeScript.

С другой стороны, ts-loader имеет встроенную поддержку обработки зависимостей типов и добавления их в собранный бандл кода. Это может быть полезно, если вы хотите иметь все необходимые типы доступными во время выполнения вашего приложения.

Возможно, в вашем проекте вы используете babel-loader вместо ts-loader, чтобы упростить настройку или воспользоваться несколькими другими плагинами, которые доступны только для Babel. Однако, в таком случае, вы можете потерять некоторые преимущества, которые предоставляет ts-loader, включая добавление зависимостей типов в бандл.

В целом, выбор между babel-loader и ts-loader зависит от ваших потребностей и предпочтений. Если вам нужна поддержка зависимостей типов и другие функции специфичные для TypeScript, то ts-loader будет более подходящим выбором. Если вам нужна более широкая поддержка различных плагинов и возможность обрабатывать разные версии JavaScript, тогда babel-loader может быть предпочтительным.