unenv
`unenv` is a framework agnostic system that allows converting JavaScript code to be platform agnostic and working in any environment including Browsers, Workers, Node.js or pure JavaScript runtime.
Last updated 3 years ago by pi0 .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install unenv 
SYNC missed versions from official npm registry.

unenv

unenv is a framework agnostic system that allows converting JavaScript code to be platform agnostic and working in any environment including Browsers, Workers, Node.js or pure JavaScript runtime.

Install

# Using npm
npm i -D unenv

# Using yarn
yarn add --dev unenv

# Using pnpm
pnpm add -D unenv

Usage

Using env utility and built-in presets (and nodeless), unenv will provide an abstract configuration that can be used in building pipelines (rollup.js, webpack, etc.).

import { env, node, nodeless } from "unenv";

const { alias, inject, polyfill, external } = env(...presets);

Presets

node

Suitable to convert universal libraries working in Node.js. (preset)

  • Add supports for global fetch API
  • Set Node.js built-ins as externals

nodeless

Using this preset, we can convert a code that is depending on Node.js to work anywhere else.

Built-in Node.js modules

unenv provides a replacement for all Node.js built-ins for cross-platform compatiblity.

Module Status Source
node:assert Mocked -
node:async_hooks Polyfilled unenv/node/async_hooks
node:buffer Polyfilled unenv/node/buffer
node:child_process Mocked -
node:cluster Mocked -
node:console Mocked -
node:constants Mocked -
node:crypto Polyfilled unenv/node/crypto
node:dgram Mocked -
node:diagnostics_channel Mocked -
node:dns Mocked -
node:domain Mocked -
node:events Polyfilled unenv/node/events
node:fs Polyfilled unenv/node/fs
node:fs/promises Polyfilled unenv/node/fs/promises
node:http2 Mocked -
node:http Polyfilled unenv/node/http
node:https Mocked -
node:inspector Mocked -
node:module Mocked -
node:net Polyfilled unenv/node/net
node:os Mocked -
node:path Polyfilled unenv/node/path
node:perf_hooks Mocked -
node:process Polyfilled unenv/node/process
node:punycode Mocked -
node:querystring Mocked -
node:readline Mocked -
node:repl Mocked -
node:stream Polyfilled unenv/node/stream
node:stream/consumers Mocked unenv/node/stream/consumers
node:stream/promises Mocked unenv/node/stream/promises
node:stream/web Native unenv/node/stream/web
node:string_decoder Mocked -
node:sys Mocked -
node:timers Mocked -
node:timers/promises Mocked -
node:tls Mocked -
node:trace_events Mocked -
node:tty Mocked -
node:url Polyfilled unenv/node/url
node:util Polyfilled unenv/node/util
node:util/types Polyfilled unenv/node/util/types
node:v8 Mocked -
node:vm Mocked -
node:wasi Mocked -
node:worker_threads Mocked -
node:zlib Mocked -

npm packages

unenv provides a replacement for common npm packages for cross platform compatibility.

Package Status Source
npm/consola Use native console unenv/runtime/npm/consola
npm/cross-fetch Use native fetch unenv/runtime/npm/cross-fetch
npm/debug Mocked with console.debug unenv/runtime/npm/debug
npm/fsevents Mocked unenv/runtime/npm/fsevents
npm/inherits Inlined unenv/runtime/npm/inherits
npm/mime-db Minimized unenv/runtime/npm/mime-db
npm/mime Minimized unenv/runtime/npm/mime
npm/node-fetch Use native fetch unenv/runtime/npm/node-fetch
npm/whatwg-url Use native URL unenv/runtime/npm/whatwg-url

Auto-mocking proxy

import MockProxy from "unenv/runtime/mock/proxy";

console.log(MockProxy().foo.bar()[0]);

Above package doesn't work outside of Node.js and neither we need any platform specific logic! When aliasing os to mock/proxy-cjs, it will be auto mocked using a Proxy Object which can be recursively traversed like an Object, called like a Function, Iterated like an Array, or instantiated like a Class.

We use this proxy for auto mocking unimplemented internals. Imagine a package does this:

const os = require("os");
if (os.platform() === "windows") {
  /* do some fix */
}
module.exports = () => "Hello world";

By aliasing os to unenv/runtime/mock/proxy-cjs, code will be compatible with other platforms.

Other polyfills

Please check ./src/runtime to discover other polyfills.

License

MIT

Current Tags

  • 1.5.1                                ...           latest (3 years ago)

46 Versions

  • 1.5.1                                ...           3 years ago
  • 1.5.0                                ...           3 years ago
  • 1.4.1                                ...           3 years ago
  • 1.4.0                                ...           3 years ago
  • 1.3.1                                ...           3 years ago
  • 1.3.0                                ...           3 years ago
  • 1.2.2                                ...           3 years ago
  • 1.2.1                                ...           3 years ago
  • 1.2.0                                ...           3 years ago
  • 1.1.1                                ...           3 years ago
  • 1.1.0                                ...           3 years ago
  • 1.0.3                                ...           3 years ago
  • 1.0.2                                ...           3 years ago
  • 1.0.1                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
  • 0.6.2                                ...           4 years ago
  • 0.6.1                                ...           4 years ago
  • 0.6.0                                ...           4 years ago
  • 0.5.4                                ...           4 years ago
  • 0.5.3                                ...           4 years ago
  • 0.5.2                                ...           4 years ago
  • 0.5.1                                ...           4 years ago
  • 0.5.0                                ...           4 years ago
  • 0.4.6                                ...           4 years ago
  • 0.4.5                                ...           4 years ago
  • 0.4.4                                ...           4 years ago
  • 0.4.3                                ...           4 years ago
  • 0.4.2                                ...           4 years ago
  • 0.4.1                                ...           4 years ago
  • 0.4.0                                ...           4 years ago
  • 0.3.10                                ...           5 years ago
  • 0.3.9                                ...           5 years ago
  • 0.3.8                                ...           5 years ago
  • 0.3.7                                ...           5 years ago
  • 0.3.6                                ...           5 years ago
  • 0.3.5                                ...           5 years ago
  • 0.3.4                                ...           5 years ago
  • 0.3.3                                ...           5 years ago
  • 0.3.2                                ...           5 years ago
  • 0.3.1                                ...           5 years ago
  • 0.3.0                                ...           5 years ago
  • 0.2.3                                ...           5 years ago
  • 0.2.2                                ...           5 years ago
  • 0.2.1                                ...           5 years ago
  • 0.2.0                                ...           5 years ago
  • 0.1.1                                ...           5 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 1
Last Month 2
Dependencies (5)
Dev Dependencies (8)
Dependents (2)

Copyright 2013 - present © cnpmjs.org | Home |