os-detect

Лёгкое определение ОС и типа устройства для браузера, Node.js и SSR — с React-хуками и Vue composables. Без зависимостей.
Возможности
getOS()— возвращает типизированный строковый идентификатор текущей ОС; приоритет проверки гарантирует, что ChromeOS никогда не определится как Linux- Булевы функции —
detectIsIOS(),detectIsMacOS(),detectIsAndroid(),detectIsWindows(),detectIsLinux(),detectIsChromeOS()— все синхронные и кэшируемые detectIsWindows11()— асинхронная; используетnavigator.userAgentData.getHighEntropyValues()в браузере иos.release()в Node.js- Категория устройства —
isMobileDevice()иisDesktopDevice()для быстрых грубых проверок - React-хуки —
useOS()иuseIsWindows11()изos-detect/react - Vue composables —
useOS()иuseIsWindows11()изos-detect/vueкак readonly-ссылки - Поддержка Node.js — читает
process.platform, когдаnavigatorотсутствует;detectIsWindows11()использует номер сборки изos.release() - Определение iPadOS 13+ — корректно определяет iPad, отправляющие
Macintoshв userAgent, черезnavigator.maxTouchPoints - Кэш результатов — каждая функция кэширует свой результат после первого вызова; нулевые накладные расходы при последующих вызовах
- Никаких runtime-зависимостей — никаких внешних пакетов; React и Vue — опциональные peer-зависимости
- Tree-shakeable ESM — импортируйте только то, что используете; UMD- и CJS-сборки также включены
Установка
bash
npm install os-detectReact-хуки (опциональная peer-зависимость):
bash
npm install react@>=17Vue composables (опциональная peer-зависимость):
bash
npm install vue@>=3Быстрый старт
ts
import {
getOS,
detectIsIOS,
detectIsWindows,
isMobileDevice,
} from 'os-detect'
console.log(getOS()) // 'windows' | 'macos' | 'ios' | 'android' | 'linux' | 'chromeos' | 'unknown'
console.log(detectIsIOS()) // true на iPhone / iPad
console.log(detectIsWindows()) // true на Windows desktop
console.log(isMobileDevice()) // true на iOS или AndroidВсе функции синхронны и кэшируются — безопасно вызывать при каждом рендере или в любом реактивном контексте.