Skip to content

JSWhere is a lightweight JavaScript library for detecting runtime environments like React Native, Expo, Vite, Next.js, and NestJS. With zero dependencies and type-safe implementation, it provides accurate environment detection for both frontend and backend applications, helping developers write environment-specific code with confidence.

Notifications You must be signed in to change notification settings

BiteCraft/JSWhere

Repository files navigation

     _ ____  __        ___                   
    | / ___| \ \      / / |__   ___ _ __ ___ 
 _  | \___ \  \ \ /\ / /| '_ \ / _ \ '__/ _ \
| |_| |___) |  \ V  V / | | | |  __/ | |  __/
 \___/|____/    \_/\_/  |_| |_|\___|_|  \___|

JSWhere πŸ”

A lightweight and precise JavaScript library that detects the exact runtime environment of your application, including React Native, Expo, Vite, Next.js, NestJS, and more. πŸš€

License: MIT Node.js Version TypeScript

Table of Contents

β€’ Overview
β€’ Features
β€’ Installation
β€’ Usage
β€’ Supported Environments β€’ Development β€’ API Reference
β€’ Contributing
β€’ License

Overview 🎯

Runtime Environment Detector is a powerful utility that helps you identify the current JavaScript runtime environment your code is executing in. Whether you're running in Vite, React Native, Expo, or other environments, this library provides accurate detection.

Features ✨

  • πŸ” Accurate runtime environment detection
  • 🎯 Type-safe implementation
  • πŸš€ Zero dependencies
  • πŸ’¨ Lightweight and fast
  • πŸ”Œ Easy integration
  • πŸ“¦ Tree-shakeable

Installation πŸ“¦

# Using npm
npm install @bitecraft/jswhere

# Using Bun
bun install @bitecraft/jswhere

# Using pnpm
pnpm install @bitecraft/jswhere

# Using yarn
yarn add @bitecraft/jswhere

Usage πŸš€

import { detectEnvironment } from '@bitecraft/jswhere';

const environment = detectEnvironment();
console.log(`Current runtime environment: ${environment}`);

Supported Environments βœ…

Current implementation status:

  • Vite
  • React Native
  • Expo
  • Next.js (Coming soon)
  • NestJS (Coming soon)
  • Browser (Coming soon)
  • Node.js (Coming soon)
  • Electron (Coming soon)
  • Remix (Coming soon)
  • Nuxt (Coming soon)
  • SvelteKit (Coming soon)
  • Deno (Coming soon)
  • Bun (Coming soon)

Development πŸ› οΈ

Prerequisites

  • Node.js >= 14.0.0
  • TypeScript/Javascript knowledge

Setting Up Development Environment

  1. Clone the repository:
git clone https://github.com/BiteCraft/jswhere.git
cd jswhere
  1. Install dependencies:
npm install
  1. Start development
npm run dev

Building the Project

npm run build

API Reference πŸ“š

Main Function

function detectEnvironment(): RuntimeEnvironment

Returns one of the following types:

type RuntimeEnvironment =
  | "expo"
  | "react-native"
  | "vite"
  | "nextjs"
  | "nestjs"
  | "browser"
  | "node"
  | "electron"
  | "remix"
  | "nuxt"
  | "sveltekit"
  | "deno"
  | "bun"
  | "unknown";

Contributing 🀝

This project is currently a work in progress, and we welcome contributions! If you'd like to help, here are some ways you can contribute:

  1. Implement missing environment detectors
  2. Improve existing detectors
  3. Add tests
  4. Improve documentation

To contribute:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/NewDetector)
  3. Commit your changes(git commit -m 'feat: add new environment detector')
  4. Push to the branch (git push origin feature/NewDetector)
  5. Open a Pull Request

License πŸ“„

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❀️ using TypeScript

About

JSWhere is a lightweight JavaScript library for detecting runtime environments like React Native, Expo, Vite, Next.js, and NestJS. With zero dependencies and type-safe implementation, it provides accurate environment detection for both frontend and backend applications, helping developers write environment-specific code with confidence.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published