Files
frontend/packages/browserslist-to-targets/README.md
2026-09-08 23:23:10 +04:00

48 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# @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