🕊️ unenv
![npm downloads](https://img.shields.io/npm/dm/unenv?color=yellow)
[!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:
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:
Node.js compatibility
unenv
replaces Node.js built-in modules compatible with any runtime (view source).
Manual mocking
import MockProxy from "unenv/mock/proxy";
const lib = MockProxy.__createMock__("lib", {
});
(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