SWC предоставляет интерфейс командной строки, через который управляется
процесс трансформации, сборки и минификации JavaScript/TypeScript-кода.
Поведение компилятора в значительной степени определяется набором
флагов, которые либо дополняют конфигурацию .swcrc, либо
полностью её переопределяют.
Флаги делятся на несколько категорий: управление входом и выходом, настройка транспиляции, работа с модулями, генерация source maps, минификация, режим наблюдения и переопределение конфигурации.
Базовая работа SWC начинается с указания входного файла или директории и назначения результата компиляции.
swc
Пример логики использования:
Приоритет вывода определяется явно заданным флагом. При конфликте параметров используется наиболее специфичный вариант (файл имеет приоритет над директорией).
SWC по умолчанию читает конфигурацию из .swcrc. Поведение
конфигурационного слоя можно изменять через CLI.
.swcrc
Использование этих флагов критично при необходимости воспроизводимых сборок, когда поведение должно определяться исключительно CLI-параметрами или внешним конфигом.
SWC выполняет трансформации AST на основе набора preset-ов и опций.
Хотя большинство настроек задаётся в .swcrc, часть
поведения может корректироваться через CLI:
Целевой стандарт влияет на:
Система модулей определяет формат выходного кода.
Основные режимы:
Через конфигурацию и частично CLI управляется поведение:
import/export
require
CLI-флаги в этой области чаще выступают как триггеры переопределения конфигурации, а не как полный набор параметров.
Source maps обеспечивают обратную трассировку скомпилированного кода к исходным файлам.
–source-maps — включение генерации source maps
варианты поведения:
.map файлы
Source maps влияют на отладку и интеграцию с DevTools, особенно при работе с TypeScript и JSX.
Для автоматической пересборки при изменении файлов используется режим наблюдения.
Поведение включает:
Watch-режим особенно важен в связке с монорепозиториями и крупными кодовыми базами.
SWC поддерживает высокопроизводительную минификацию, реализованную на уровне Rust-ядра.
При активации выполняются:
Минификация может комбинироваться с транспиляцией, но в некоторых конфигурациях выполняется как отдельный этап.
В некоторых сценариях требуется пропуск части обработки:
Такие режимы чаще задаются через .swcrc, но могут быть
принудительно переопределены CLI-флагами через отключение
соответствующих пресетов.
SWC оптимизирован для многопоточной обработки. Поведение CLI может учитывать:
Хотя явные флаги управления потоками ограничены, архитектурно CLI ориентирован на максимальную загрузку доступных ресурсов без дополнительной настройки.
CLI-флаги часто используются для временного изменения поведения без
редактирования .swcrc.
Ключевые сценарии:
Такой подход используется в CI/CD пайплайнах, где требуется детерминированный результат сборки.
Компиляция директории с генерацией source maps и выходом в отдельную папку:
swc src -d dist --source-maps
Минификация входного файла с записью результата:
swc index.js --out-file bundle.min.js --minify
Принудительное игнорирование конфигурации проекта:
swc src -d dist --no-swcrc --target es2018
Режим наблюдения с пересборкой:
swc src -d dist --watch