Giter VIP home page Giter VIP logo

esbuild-plugin-polyfill-node's Introduction

esbuild-plugin-polyfill-node

ESBuild plugin to polyfill Node.js built-ins and globals, geared towards edge environments and Deno (including Deno Deploy). It consists of two plugins: polyfillNode, which should work for most cases, and polyfillNodeForDeno which targets Deno and Deno Deploy specifically.

Installation

npm install esbuild-plugin-polyfill-node

polyfillNode

Usage

import { build } from "esbuild";
import { polyfillNode } from "esbuild-plugin-polyfill-node";

build({
	entryPoints: ["src/index.js"],
	bundle: true,
	outfile: "dist/bundle.js",
	plugins: [
		polyfillNode({
			// Options (optional)
		}),
	],
});

Options

  • globals.buffer: Whether to inject the Buffer global. Disable it to prevent code like if (typeof Buffer !== "undefined") from pulling in the (quite large) buffer-es6 polyfill. Default: true.
  • globals.process: Whether to inject the process global. Disable it to prevent process.env.NODE_ENV from pulling in the process-es6 polyfill. You can use the define option to replace process.env.NODE_ENV instead. Default: true.
  • polyfills: Polyfills to inject. It's an object where the keys are the names of the polyfills and the values are false, true, or "empty". false disables the polyfill, true enables it, and "empty" injects an empty polyfill.

Implemented polyfills

Polyfills are provided by the @jspm/core package.

  • _stream_duplex
  • _stream_passthrough
  • _stream_readable
  • _stream_transform
  • _stream_writable
  • assert
  • assert/strict
  • async_hooks
  • buffer
  • child_process
  • cluster
  • console
  • constants
  • crypto
  • dgram
  • diagnostics_channel
  • dns
  • domain
  • events
  • fs
  • fs/promises
  • http
  • http2
  • https
  • module
  • net
  • os
  • path
  • perf_hooks
  • process
  • punycode
  • querystring
  • readline
  • repl
  • stream
  • string_decoder
  • sys
  • timers
  • timers/promises
  • tls
  • tty
  • url
  • util
  • v8
  • vm
  • wasi
  • worker_threads
  • zlib

¹ All except crypto and fs polyfills are on by default. crypto and fs have to be explicitly enabled. Otherwise, they will be replaced with empty stubs.

Globals

  • global (aliased to globalThis)
  • __dirname (always "/")
  • __filename (always "/index.js")
  • process (imports the process module)
  • Buffer (imports the buffer module)
  • navigator (shim, not included by default)

You can control which globals are injected using the globals option.

polyfillNodeForDeno

This plugin uses Deno's std/node library to polyfill Node builtins and globals.

Note that the std/node library has been removed from Deno in version 0.178.0 because now Deno has builtin support for Node builtin modules (e.g. node:fs). This plugin is still useful for deploying to Deno Deploy, which doesn't support them yet.

Usage

import { build } from "esbuild";
import { polyfillNodeForDeno } from "esbuild-plugin-polyfill-node";

build({
	entryPoints: ["src/index.js"],
	bundle: true,
	outfile: "dist/bundle.js",
	plugins: [
		polyfillNodeForDeno({
			// Options (optional)
		}),
	],
});

Options

  • stdVersion: Version of the Deno standard library to use. Default: "0.177.0".
  • globals: Whether to inject global polyfills (process, Buffer, setImmediate, clearImmediate, __dirname, and __filename). Default: true.
  • polyfills: Polyfills to inject. It's an object where the keys are the names of the polyfills and the values are false, true, "npm" or "empty". false disables the polyfill, true enables it (default where exists), "npm" injects a polyfill from the NPM (default for "domain", "punycode", "vm", and "zlib"), and "empty" injects an empty polyfill (default for missing polyfills).

Credits

esbuild-plugin-polyfill-node's People

Contributors

brillout avatar cyco130 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.