Добавлен browserslist-to-targets
This commit is contained in:
47
packages/browserslist-to-targets/README.md
Normal file
47
packages/browserslist-to-targets/README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# @advdominion/browserslist-to-targets
|
||||
|
||||
Преобразует конфиг [browserslist](https://github.com/browserslist/browserslist) в массив target-строк, совместимый с [esbuild](https://esbuild.github.io) и [Oxc](https://oxc-project.github.io).
|
||||
|
||||
## Зачем
|
||||
|
||||
Оба инструмента (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
|
||||
Reference in New Issue
Block a user