JavaRush /Курсы /Модуль 2: Fullstack /Системы сборки проектов

Системы сборки проектов

Модуль 2: Fullstack
7 уровень , 4 лекция
Открыта

5.1 Webpack

Для полноценной работы с TypeScript необходимо интегрировать его с системами сборки, такими как Webpack, Gulp и Parcel. В этой лекции вы научитесь настраивать эти инструменты для работы с TypeScript, чтобы обеспечить эффективный процесс разработки.

Webpack — это мощный инструмент для сборки модулей JavaScript. Он используется для компиляции модулей в статические файлы для браузера.

1. Установка Webpack и TypeScript

Для начала создайте новый проект и установите необходимые зависимости:

Terminal
    
      mkdir my-webpack-ts-app
      cd my-webpack-ts-app
      npm init -y
      npm install typescript ts-loader webpack webpack-cli --save-dev
    
  

2. Создание конфигурационного файла tsconfig.json

Создайте файл tsconfig.json в корне проекта:

JSON
    
      {
        "compilerOptions": {
          "target": "ES6",
          "module": "ESNext",
          "outDir": "./dist",
          "strict": true,
          "esModuleInterop": true,
          "skipLibCheck": true
        },
        "include": ["src"],
        "exclude": ["node_modules"]
      }
    
  

Объяснения:

сompilerOptions

Это объект, содержащий настройки компилятора TypeScript. Все параметры внутри этого объекта управляют различными аспектами процесса компиляции.

  • target: "ES6": указывает, до какой версии ECMAScript должен быть скомпилирован код. В данном случае компиляция будет нацелена на ECMAScript 6 (ES2015).
  • module: "ESNext": определяет, какой модульный стандарт будет использоваться. ESNext выбирает последний доступный стандарт ECMAScript для модулей.
  • outDir: "./dist": задает выходную директорию, куда будут помещены скомпилированные файлы JavaScript. В данном случае это папка ./dist.
  • strict: true: включает строгий режим компиляции TypeScript, который активирует несколько проверок, повышающих типобезопасность кода. Включает такие проверки, как noImplicitAny, strictNullChecks и другие.
  • esModuleInterop: true: включает совместимость с модулями ES и CommonJS, чтобы можно было корректно импортировать модули, написанные в стиле CommonJS (например, библиотеки Node.js).
  • skipLibCheck: true: отключает проверку типов в библиотеках, которые подключаются через node_modules. Это ускоряет компиляцию, но снижает уровень проверок типов в подключаемых библиотеках.

3. Создание конфигурационного файла Webpack

Создайте файл webpack.config.js в корне проекта:

JavaScript
    
      const path = require('path');
      // Подключает модуль Node.js 'path', который
      // предоставляет утилиты для работы с путями файловой системы.

      module.exports = {
        entry: './src/index.ts',
        // Указывает входную точку для Webpack, то есть файл, с которого
        // начинается сборка. В данном случае это './src/index.ts'.

        module: {
          rules: [
            {
              test: /\.ts$/, // Указывает регулярное выражение для файлов, которые
              // Webpack должен обрабатывать с помощью правила (все файлы с расширением .ts).

              use: 'ts-loader', // Указывает, какой загрузчик (loader) использовать для обработки
              // TypeScript-файлов. В данном случае это 'ts-loader', который компилирует TypeScript в JavaScript.

              exclude: /node_modules/ // Исключает файлы и папки внутри node_modules,
              // чтобы они не обрабатывались 'ts-loader'.
            }
          ]
        },

        resolve: {
          extensions: ['.ts', '.js'] // Указывает расширения файлов, которые Webpack будет
          // пытаться разрешать при импортах. Это позволяет не указывать расширения явно при импорте файлов.
        },

        output: {
          filename: 'bundle.js', // Имя файла, который будет сгенерирован после сборки. В данном случае это 'bundle.js'.

          path: path.resolve(__dirname, 'dist') // Указывает путь для выходного файла. Функция 'path.resolve'
          // создаёт абсолютный путь, и здесь файлы будут сохранены в папке 'dist' относительно корневой директории.
        },

        mode: 'development' // Указывает режим сборки. В режиме 'development' Webpack создаёт менее
        // оптимизированный, но более удобный для отладки код.
      };
    
  

Основные элементы:

  1. entry:
    • Входная точка сборки Webpack. В данном случае это ./src/index.ts — файл, с которого начнётся сборка всех зависимостей.
  2. module.rules:
    • Это массив правил для обработки разных типов файлов.
    • test: Определяет тип файлов, к которым будет применяться правило (файлы с расширением .ts).
    • use: Указывает, какой загрузчик (ts-loader) будет использоваться для обработки этих файлов. ts-loader компилирует TypeScript в JavaScript.
    • exclude: Исключает из обработки файлы и папки в директории node_modules.
  3. resolve:
    • Определяет расширения файлов, которые можно импортировать без указания расширения. Например, при импорте import foo from './foo';, Webpack сначала попробует найти foo.ts, а потом foo.js.
  4. output:
    • filename: Имя итогового файла сборки — bundle.js.
    • path: Путь к директории, куда будет сохраняться файл сборки (dist).
  5. mode:
    • Режим работы Webpack — development означает, что код будет скомпилирован в более читаемом виде с возможностью отладки.

4. Создание структуры проекта

Создайте папку src и файл src/index.ts:

Terminal
    
      mkdir src
      touch src/index.ts
    
  

Добавьте простой TypeScript код в src/index.ts:

TypeScript
    
      const greeting: string = 'Hello, Webpack with TypeScript!';
      console.log(greeting);
    
  

5. Скрипты для сборки

Добавьте скрипты в package.json для сборки проекта:

JSON
    
      "scripts": {
        "build": "webpack"
      }
    
  

6. Сборка проекта

Запустите сборку проекта:

Terminal
    
      npm run build
    
  

Ваш проект будет собран, и скомпилированный файл bundle.js будет находиться в папке dist.

5.2 Gulp

Gulp — это автоматизатор задач, который используется для автоматизации повторяющихся задач в процессе разработки.

1. Установка Gulp и TypeScript

Создайте новый проект и установите необходимые зависимости:

Terminal
    
      mkdir my-gulp-ts-app
      cd my-gulp-ts-app
      npm init -y
      npm install gulp typescript gulp-typescript --save-dev
    
  

2. Создание конфигурационного файла tsconfig.json

Создайте файл tsconfig.json в корне проекта:

JSON
    
      {
        "compilerOptions": {
          "target": "ES6",
          "module": "commonjs",
          "outDir": "./dist",
          "strict": true,
          "esModuleInterop": true,
          "skipLibCheck": true
        },
        "include": ["src"],
        "exclude": ["node_modules"]
      }
    
  

3. Создание Gulpfile

Создайте файл gulpfile.js в корне проекта:

JavaScript
    
      const gulp = require('gulp'); // Подключает Gulp, инструмент автоматизации сборки.
      const ts = require('gulp-typescript'); // Подключает плагин для обработки TypeScript-файлов.

      const tsProject = ts.createProject('tsconfig.json'); // Создаёт проект TypeScript на основе конфигурации из 'tsconfig.json'.

      // Задача для обработки TypeScript
      gulp.task('scripts', () => {
        return tsProject.src() // Получает все файлы TypeScript из проекта.
          .pipe(tsProject()) // Передаёт файлы в tsProject для компиляции.
          .js.pipe(gulp.dest('dist')); // Сохраняет скомпилированные JavaScript-файлы в папку 'dist'.
      });

      // Задача для наблюдения за изменениями в TypeScript-файлах
      gulp.task('watch', () => {
        gulp.watch('src/**/*.ts', gulp.series('scripts')); // Наблюдает за изменениями в файлах .ts в папке 'src' и запускает задачу 'scripts'.
      });

      // Задача по умолчанию, которая выполняет 'scripts' и затем 'watch'
      gulp.task('default', gulp.series('scripts', 'watch'));
    
  

4. Создание структуры проекта

Создайте папку src и файл src/index.ts:

Terminal
    
      mkdir src
      touch src/index.ts
    
  

Добавьте простой TypeScript код в src/index.ts:

TypeScript
    
      const greeting: string = 'Hello, Gulp with TypeScript!';
      console.log(greeting);
    
  

5. Запуск Gulp задач

Запустите Gulp для сборки и отслеживания изменений:

Terminal
    
      npx gulp
    
  

Ваш проект будет собран, и скомпилированные файлы будут находиться в папке dist.

5.3 Parcel

Parcel — это система сборки с нулевой конфигурацией, которая упрощает процесс настройки и использования.

1. Установка Parcel и TypeScript

Создайте новый проект и установите необходимые зависимости:

Terminal
    
      mkdir my-parcel-ts-app
      cd my-parcel-ts-app
      npm init -y
      npm install parcel typescript --save-dev
    
  

2. Создание конфигурационного файла tsconfig.json

Создайте файл tsconfig.json в корне проекта:

JSON
    
      {
        "compilerOptions": {
          "target": "ES6",
          "module": "ESNext",
          "strict": true,
          "esModuleInterop": true,
          "skipLibCheck": true
        },
        "include": ["src"],
        "exclude": ["node_modules"]
      }
    
  

3. Создание структуры проекта

Создайте папку src и файл src/index.ts:

Terminal
    
      mkdir src
      touch src/index.ts
    
  

Добавьте простой TypeScript код в src/index.ts:

TypeScript
    
      const greeting: string = 'Hello, Parcel with TypeScript!';
      console.log(greeting);
    
  

4. Скрипты для сборки и запуска

Добавьте скрипты в package.json для сборки и запуска проекта:

JSON
    
      "scripts": {
        "dev": "parcel src/index.html",
        "build": "parcel build src/index.html"
      }
    
  

5. Создание HTML файла

Создайте файл src/index.html:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Parcel TypeScript</title>
        </head>
        <body>
          <script src="./index.ts"></script>
        </body>
      </html>
    
  

6. Запуск проекта

Запустите проект в режиме разработки:

Terminal
    
      npm run dev
    
  

Parcel автоматически соберет и запустит проект, а также будет отслеживать изменения в файлах и пересобирать проект по мере необходимости.

3
Задача
Модуль 2: Fullstack, 7 уровень, 4 лекция
Недоступна
Настройка Webpack с TypeScript **
Настройка Webpack с TypeScript **
3
Задача
Модуль 2: Fullstack, 7 уровень, 4 лекция
Недоступна
Сборка проекта с Gulp **
Сборка проекта с Gulp **
3
Задача
Модуль 2: Fullstack, 7 уровень, 4 лекция
Недоступна
Использование Parcel для TypeScript **
Использование Parcel для TypeScript **
3
Задача
Модуль 2: Fullstack, 7 уровень, 4 лекция
Недоступна
Реэкспорт и сборка Webpack **
Реэкспорт и сборка Webpack **
3
Опрос
Работа с модулями, 7 уровень, 4 лекция
Недоступен
Работа с модулями
Работа с модулями
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ