Socket
Socket
Sign inDemoInstall

@fal-works/esbuild-plugin-global-externals

Package Overview
Dependencies
0
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @fal-works/esbuild-plugin-global-externals

esbuild plugin for replacing imports with global variables.


Version published
Weekly downloads
3M
decreased by-9.54%
Maintainers
1
Install size
19.0 kB
Created
Weekly downloads
 

Package description

What is @fal-works/esbuild-plugin-global-externals?

The @fal-works/esbuild-plugin-global-externals npm package is designed to work with the esbuild bundler, allowing developers to exclude specific modules from the bundle and instead treat them as global variables provided at runtime. This is particularly useful for large libraries or frameworks that are included via a CDN or are already present in the global scope of the user's environment.

What are @fal-works/esbuild-plugin-global-externals's main functionalities?

Exclude specific modules

This feature allows developers to exclude modules like React and ReactDOM from the bundle. These excluded modules are then accessed as global variables, which must be included in the global scope separately, typically via a script tag in HTML.

require('esbuild').build({
  entryPoints: ['app.js'],
  bundle: true,
  outfile: 'out.js',
  plugins: [
    require('@fal-works/esbuild-plugin-global-externals')({
      react: 'React',
      'react-dom': 'ReactDOM'
    })
  ]
});

Other packages similar to @fal-works/esbuild-plugin-global-externals

Readme

Source

esbuild-plugin-global-externals

esbuild plugin for replacing imports with global variables.

Similar to (but not the same as) output.globals option of Rollup. See also: evanw/esbuild#337

Originally developed with esbuild v0.8.40, and should work with higher versions as well.

TL;DR

This:

import p5 from "p5";
new p5();

transpiles to:

// Here a variable `p5` should be defined globally (typically via UMD)
var p5_default = p5;
new p5_default();

Usage example

import { globalExternals } from "@fal-works/esbuild-plugin-global-externals";

/** Mapping from module paths to global variables */
const globals = {
  jquery: "$"
};

esbuild.build({
  entryPoints: ["src/main.js"],
  outfile: "dist/bundle.js",
  bundle: true,
  plugins: [globalExternals(globals)],
});

If you prefer RegExp use globalExternalsWithRegExp() instead, however note that the RegExp you'll pass should be valid in Go language as well.

Configuration

Instead of simply providing variable names only, you can pass ModuleInfo objects to configure the loading behavior for each module.

Module type

Either "esm" (default) or "cjs".

This determines the internal behavior of this plugin when loading modules (which affects the code after bundling as well).

globalExternals({
  "someModulePath": {
    varName: "someGlobalVar",
    type: "cjs"
  }
})

Named/default export

If type: "esm" and also if you're doing named import with some modules in question, you have to tell which variables from each module should be importable.

Additionally, if you don't do default import/export, you can prevent emitting code for this with defaultExport: false.

Both have no effects if type: "cjs" (which should work fine with named imports as well).

globalExternals({
  "someModulePath": {
    varName: "someGlobalVar",
    namedExports: ["someExportedVar"],
    defaultExport: false
  }
})

The example above enables the following even if type: "esm":

import { someExportedVar } from "someModulePath";

which transpiles to:

var someExportedVar = someGlobalVar.someExportedVar;

Keywords

FAQs

Last updated on 19 Jul 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc