Babel и TypeScript: Настройка
В этом уроке мы узнаем, как использовать Babel в проекте TypeScript и в каких случаях это полезно.
Технические требования
Для этого урока на вашем компьютере должно быть установлено следующее:
- Node.js и npm . Вы можете скачать их с https://nodejs.org/en/download/ . Если они у вас уже установлены, убедитесь, что версия Node.js не ниже 8.2, а npm — не ниже версии 5.
- Редактор кода, например Visual Studio Code . Его можно установить с https://code.visualstudio.com/ .
- Стартовый проект.
- После загрузки стартового проекта. Откройте его в редакторе кода и выполните следующую команду в окне терминала:
npm install
Это установит зависимость проекта — TypeScript.
Понимание необходимости Babel
Babel — популярный инструмент, который в основном используется для преобразования кода ECMAScript 2015+ в обратно совместимую версию JavaScript в текущих и старых браузерах или средах. Он также может конвертировать код TypeScript в JavaScript.
Зачем вам использовать Babel для транспиляции TypeScript, если компилятор TypeScript уже делает это? Что ж, Babel способен конвертировать JSX в JavaScript, а компилятор TypeScript этого сделать не может.
Итак, если ваш проект создан с использованием React, вам понадобится Babel. Если проект уже использует Babel, проще взять на себя всю ответственность за всю транспиляцию. Это позволяет TypeScript сосредоточиться на том, в чем он лучше всего справляется — проверке типов.
Добавление Babel в проект
Стартовый проект является продолжением предыдущего урока. Приложение, которое мы создаем, будет складывать числа из двух входных данных.
- В окне терминала давайте установим Babel с необходимыми плагинами в качестве зависимости для разработки:
npm install --save-dev @babel/core @babel/preset-env @babel/preset-typescript @babel/cli
Вот объяснение пакетов, которые мы только что установили:
@babel/core
: Как следует из названия, это основная библиотека Babel.@babel/preset-env
: это набор плагинов, которые позволяют нам использовать новейшие функции JavaScript, но при этом ориентированы на браузеры, которые их не поддерживают.@babel/preset-typescript
: это набор плагинов, которые позволяют Babel преобразовывать код TypeScript в JavaScript.@babel/cli
: Это инструмент командной строки Babel, который мы будем использовать для запуска Babel.
Babel настраивается в файле с именем .babelrc.
- Создадим
.babelrc
в корне нашего проекта файл следующего содержания:
{ "presets": ["@babel/preset-env", "@babel/preset-typescript"] }
Эта конфигурация сообщает Babel использовать установленные нами плагины.
Какое изменение нам нужно внести tsconfig.json
, чтобы TypeScript прекратил транспиляцию? Внесите это изменение.
Мы можем добавить noEmit
опцию компилятора.
{ "compilerOptions": { ... "noEmit": true }, ... }
- Давайте создадим npm-скрипт для запуска Babel
package.json
:
"scripts": { ... "babel": "babel src/index.ts --out-file dist/bundle.js" },
Мы сказали Babel транспилировать index.ts
и поместить сгенерированный JavaScript в bundle.js
файл в dist
папке.
- В окне терминала давайте запустим наш
babel
скрипт npm:
npm run babel
В папке dist
создается bundle.js
.
Краткое содержание
Если требования к транспиляции выходят за рамки компилятора TypeScript, мы можем использовать Babel для транспиляции и TypeScript для проверки типов.