# @advdominion/browserslist-to-targets Преобразует конфиг [browserslist](https://github.com/browserslist/browserslist) в массив target-строк, совместимый с [esbuild](https://esbuild.github.io) и [Oxc](https://oxc.rs). ## Зачем Оба инструмента (esbuild и Oxc) понимают ограниченный набор целевых браузеров, который отличается от browserslist. Пакет приводит результат `browserslist()` к короткому esbuild-формату: `["chrome109", "ios18.5"]`, а всё, что esbuild/Oxc не поддерживает (`and_chr`, `kaios`, `samsung` и т.д.) — отбрасывает. ## Установка ```bash yarn add -D @advdominion/browserslist-to-targets ``` ## Использование ```js import browserslist from 'browserslist'; import { browserslistToTargets } from '@advdominion/browserslist-to-targets'; const targets = browserslistToTargets(browserslist()); // ["chrome109", "edge149", "firefox140", "ios18.5", "opera127", "safari26.5"] ``` ## API ### `browserslistToTargets(browsers): string[]` - `browsers` — массив строк от `browserslist()`, например `["chrome 151", "ios_saf 26.6"]`. - Возвращает массив target-строк без пробела: `["chrome151", "ios26.5"]`. ## Правила преобразования | browserslist | esbuild/Oxc | Примечание | | ------------------------------------------------- | --------------- | ------------------------------------------ | | `chrome 151` | `chrome151` | версия становится «приклеенной» к имени | | `ios_saf 26.6` | `ios26.5` | `ios_saf → ios`, остаётся самая старая | | `ios_saf 25-26.5` | `ios25` | `ios_saf → ios`, диапазон → нижняя граница | | `android 151` | `chrome151` | `android → chrome` | | `ios 26.0` | `ios26` | убирает завершающий `.0` | | `and_chr`, `kaios`, `samsung`, `op_mob`, `and_ff` | — отбрасывается | нет в esbuild/Oxc | Для каждого браузера остаётся самая старая версия — трансформации покрывают самую консервативную цель. ## Лицензия MIT