Skip to content
/ unenv Public

πŸ•ŠοΈ Node.js compatibility for any JavaScript runtime, including browsers and edge workers.

License

Notifications You must be signed in to change notification settings

unjs/unenv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

819343f Β· Mar 3, 2025
Feb 11, 2025
Feb 18, 2025
Feb 26, 2025
Mar 3, 2025
Mar 3, 2025
Feb 7, 2025
Feb 18, 2025
Sep 15, 2024
Jan 3, 2023
Feb 28, 2025
Nov 15, 2022
Feb 26, 2025
Feb 12, 2025
Feb 28, 2025
Feb 26, 2025
May 31, 2024
Feb 20, 2025

Repository files navigation

πŸ•ŠοΈ unenv

npm version npm downloads install size

Note

You are on the development (v2) branch. Check out v1 for the current release.

unenv provides polyfills to add Node.js compatibility for any JavaScript runtime, including browsers and edge workers.

🌟 Used by

Usage

The defineEnv utility can generate a target environment configuration.

import { defineEnv } from "unenv";

const { env } = defineEnv({
  nodeCompat: true,
  npmShims: true,
  resolve: true,
  overrides: {},
  presets: [],
});

const { alias, inject, external, polyfill } = env;

You can then integrate the env object with your build tool:

Bundler alias inject external
rollup @rollup/plugin-alias @rollup/plugin-inject external
rolldown resolve.alias inject external
vite resolve.alias @rollup/plugin-inject ssr.external
esbuild alias inject external
rspack resolve.alias - externals
webpack resolve.alias webpack-plugin-inject externals

Options

  • nodeCompat: (default: true)
    • Add alias entries for Node.js builtins as <id> and node:<id>.
    • Add inject entries for Node.js globals global, Buffer, and process.
  • npmShims: (default: false)
    • Add alias entries to replace npm packages like node-fetch with lighter shims.
  • resolve: (default: false) Resolve config values to absolute paths.
  • overrides: Additional overrides for env config.
  • presets: Additional presets (for example @cloudflare/unenv-preset).

unenv/ polyfills

You can also directly import unenv/ polyfills:

Polyfills Description Source
unenv/mock/* Mocking utils src/runtime/mock
unenv/node/* APIs compatible with Node.js API src/runtime/node
unenv/npm/* NPM package shims src/runtime/npm
unenv/polyfill/* Global polyfills src/runtime/polyfill
unenv/web/* Subset of Web APIs src/runtime/web

Node.js compatibility

unenv replaces Node.js built-in modules compatible with any runtime (view source).

Manual mocking

// Magic proxy to replace any unknown API
import MockProxy from "unenv/mock/proxy";

// You can also create named mocks
const lib = MockProxy.__createMock__("lib", {
  /* overrides */
});

(view source)

Nightly release channel

You can use the nightly release channel to try the latest changes in the main branch via unenv-nightly.

If directly using unenv in your project:

{
  "devDependencies": {
    "unenv": "npm:unenv-nightly"
  }
}

If using unenv via another tool (Nuxt or Nitro) in your project:

{
  "resolutions": {
    "unenv": "npm:unenv-nightly"
  }
}

License

Published under the MIT license. Made by @pi0 and community πŸ’›


πŸ€– auto updated with automd