Флаги командной строки

SWC предоставляет интерфейс командной строки, через который управляется процесс трансформации, сборки и минификации JavaScript/TypeScript-кода. Поведение компилятора в значительной степени определяется набором флагов, которые либо дополняют конфигурацию .swcrc, либо полностью её переопределяют.

Флаги делятся на несколько категорий: управление входом и выходом, настройка транспиляции, работа с модулями, генерация source maps, минификация, режим наблюдения и переопределение конфигурации.


Входные и выходные пути

Базовая работа SWC начинается с указания входного файла или директории и назначения результата компиляции.

Основные параметры входа

  • входной путь (positional argument) — исходный файл или директория, передаваемая в команду swc
  • –filename — явное указание имени входного файла при передаче кода через stdin

Пример логики использования:

  • одиночный файл компилируется напрямую
  • директория рекурсивно обрабатывается с сохранением структуры

Управление выходом

  • -d, –out-dir — директория для скомпилированного кода
  • –out-file — запись результата в конкретный файл

Приоритет вывода определяется явно заданным флагом. При конфликте параметров используется наиболее специфичный вариант (файл имеет приоритет над директорией).


Отключение и переопределение конфигурации

SWC по умолчанию читает конфигурацию из .swcrc. Поведение конфигурационного слоя можно изменять через CLI.

  • –no-swcrc — полное игнорирование .swcrc
  • –config-file — указание альтернативного конфигурационного файла

Использование этих флагов критично при необходимости воспроизводимых сборок, когда поведение должно определяться исключительно CLI-параметрами или внешним конфигом.


Управление режимом транспиляции

SWC выполняет трансформации AST на основе набора preset-ов и опций.

Хотя большинство настроек задаётся в .swcrc, часть поведения может корректироваться через CLI:

  • –env (в некоторых сборках) — выбор целевого окружения
  • –target — целевая версия JavaScript (например, ES5, ES2018, ES2022)

Целевой стандарт влияет на:

  • преобразование синтаксиса
  • генерацию вспомогательных функций
  • совместимость с runtime-окружением

Работа с модулями

Система модулей определяет формат выходного кода.

Основные режимы:

  • CommonJS
  • ES Modules
  • отсутствие трансформации модулей

Через конфигурацию и частично CLI управляется поведение:

  • преобразование import/export
  • генерация require
  • сохранение ES модульной структуры

CLI-флаги в этой области чаще выступают как триггеры переопределения конфигурации, а не как полный набор параметров.


Source Maps

Source maps обеспечивают обратную трассировку скомпилированного кода к исходным файлам.

  • –source-maps — включение генерации source maps

  • варианты поведения:

    • inline source maps
    • отдельные .map файлы
    • отключение генерации

Source maps влияют на отладку и интеграцию с DevTools, особенно при работе с TypeScript и JSX.


Режим наблюдения (Watch Mode)

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

  • –watch — отслеживание изменений в файловой системе

Поведение включает:

  • инкрементальную пересборку
  • отслеживание зависимостей
  • обновление только изменённых модулей

Watch-режим особенно важен в связке с монорепозиториями и крупными кодовыми базами.


Минификация

SWC поддерживает высокопроизводительную минификацию, реализованную на уровне Rust-ядра.

  • –minify — включение минификации

При активации выполняются:

  • удаление неиспользуемого кода
  • сокращение идентификаторов
  • оптимизация выражений
  • упрощение структур управления

Минификация может комбинироваться с транспиляцией, но в некоторых конфигурациях выполняется как отдельный этап.


Отключение трансформаций

В некоторых сценариях требуется пропуск части обработки:

  • отключение преобразований синтаксиса
  • сохранение оригинального AST-представления
  • использование SWC только как минимизатора или копировщика

Такие режимы чаще задаются через .swcrc, но могут быть принудительно переопределены CLI-флагами через отключение соответствующих пресетов.


Управление потоками и производительностью

SWC оптимизирован для многопоточной обработки. Поведение CLI может учитывать:

  • параллельную обработку файлов
  • пакетную компиляцию директорий
  • распределение задач по потокам CPU

Хотя явные флаги управления потоками ограничены, архитектурно CLI ориентирован на максимальную загрузку доступных ресурсов без дополнительной настройки.


Переопределение поведения конфигурации

CLI-флаги часто используются для временного изменения поведения без редактирования .swcrc.

Ключевые сценарии:

  • отключение конфигурации проекта
  • переключение целевого окружения
  • включение/выключение source maps
  • активация минификации

Такой подход используется в 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