Go API esbuild представляет собой нативный интерфейс библиотеки сборки, реализованный на языке Go и работающий поверх той же высокопроизводительной ядровой реализации, что используется в CLI-инструменте. Ключевая особенность заключается в отсутствии межпроцессного взаимодействия: вместо запуска отдельного бинарного процесса логика выполняется непосредственно в рамках Go-программы, что снижает накладные расходы и ускоряет повторные сборки.
Основной пакет API располагается в пространстве
github.com/evanw/esbuild/pkg/api, где сосредоточены
структуры конфигурации, функции сборки и механизмы расширения через
плагины.
api и
структура конфигурацииЦентральной точкой входа выступает пакет api,
предоставляющий декларативные структуры для управления процессом
сборки.
Основная конфигурационная структура:
BuildOptions — определяет параметры сборкиTransformOptions — управляет трансформацией отдельных
модулейPlugin — интерфейс расширения поведения сборщикаBuildOptions включает ключевые поля:
EntryPoints — список входных файловOutdir или Outfile — направление
выводаBundle — включение бандлинга зависимостейPlatform — browser, node или
neutralFormat — формат результата (esm,
cjs, iife)Target — целевая версия ECMAScriptLoader — настройка обработки типов файловКонфигурация строится полностью в Go-структурах, что исключает необходимость JSON или CLI-строк.
Функция api.Build выполняет полный цикл сборки: анализ
зависимостей, трансформацию модулей и генерацию выходных файлов.
Поведение Build:
Пример типового использования API:
BuildOptionsapi.Build(options)BuildResultBuildResult содержит:
Errors и WarningsОшибки представлены структурированно, без строкового парсинга, что упрощает интеграцию в инструменты разработки.
Функция api.Transform предназначена для обработки
отдельного кода без полной сборки проекта.
Используется в сценариях:
Параметры:
TransformOptionsРезультат содержит:
В отличие от Build, данный метод не строит граф
зависимостей, что делает его существенно быстрее для единичных
операций.
Одной из ключевых возможностей Go API является поддержка
инкрементальной компиляции через Context.
api.Context создаёт долгоживущий объект сборки, который
сохраняет:
После создания контекста доступны операции:
Rebuild() — повторная сборка с минимальными
изменениямиDispose() — освобождение ресурсовИнкрементальная модель устраняет необходимость повторного анализа всего проекта при изменении одного файла. Обновляется только затронутая часть графа.
Особенно эффективно это используется в:
Плагинная система реализована через интерфейс Plugin,
который позволяет вмешиваться в процесс разрешения модулей и загрузки
контента.
Ключевые точки расширения:
OnResolve — перехват разрешения путейOnLoad — загрузка и генерация содержимого модулейПлагины могут:
Плагины выполняются внутри Go-процесса, что даёт доступ к:
Это делает Go API значительно более гибким по сравнению с JavaScript-плагинами CLI-версии.
Go API и CLI используют одно и то же ядро esbuild, однако различаются по архитектуре интеграции.
Ключевые различия:
Преимущества Go API:
CLI сохраняет преимущества:
Внутренняя реализация esbuild построена на конкурентной модели Go, активно использующей:
Go API не требует ручного управления потоками: параллелизм управляется самим esbuild. Разработчик лишь задаёт входные параметры, а планирование задач выполняется внутри ядра.
Это обеспечивает стабильную масштабируемость при увеличении количества модулей без необходимости изменения кода интеграции.
Ошибки в Go API представлены как структурированные объекты, содержащие:
Такая модель позволяет:
Диагностика не ограничивается строковым выводом, что упрощает автоматическую обработку результатов в инструментах анализа кода.