Skip to content

os-detect

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 composablesuseOS() и 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-detect

React-хуки (опциональная peer-зависимость):

bash
npm install react@>=17

Vue 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

Все функции синхронны и кэшируются — безопасно вызывать при каждом рендере или в любом реактивном контексте.