npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

rollup-plugin-external-globals

v0.13.0

Published

Transform external imports into global variables like output.globals.

Downloads

138,359

Readme

rollup-plugin-external-globals

test codecov install size

Transform external imports into global variables like Rollup's output.globals option. See rollup/rollup#2374

Installation

npm install -D rollup-plugin-external-globals

Usage

import externalGlobals from "rollup-plugin-external-globals";

export default {
  input: ["entry.js"],
  output: {
    dir: "dist",
    format: "es"
  },
  plugins: [
    externalGlobals({
      jquery: "$"
    })
  ]
};

The above config transforms

import jq from "jquery";

console.log(jq(".test"));

into

console.log($(".test"));

It also transforms dynamic import:

import("jquery")
  .then($ => {
    $ = $.default || $;
    console.log($(".test"));
  });

// transformed
Promise.resolve($)
  .then($ => {
    $ = $.default || $;
    console.log($(".test"));
  });

Note: when using dynamic import, you should notice that in ES module, the resolved object is aways a module namespace, but the global variable might be not.

Note: this plugin only works with import/export syntax. If you are using a module loader transformer e.g. rollup-plugin-commonjs, you have to put this plugin after the transformer plugin.

API

This module exports a single function.

createPlugin

const plugin = createPlugin(
  globals: Object | Function,
  {
    include?: ReadonlyArray<string | RegExp> | string | RegExp | null,
    exclude?: ReadonlyArray<string | RegExp> | string | RegExp | null,
    dynamicWrapper?: Function,
    constBindings?: Boolean
  } = {}
);

globals is a moduleId/variableName map. For example, to map jquery module to $:

const globals = {
  jquery: "$"
}

or provide a function that takes the moduleId and returns the variableName.

const globals = (id) => {
  if (id === "jquery") {
    return "$";
  }
}

include is a valid picomatch glob pattern, or array of patterns. If defined, only matched files would be transformed.

exclude is a valid picomatch glob pattern, or array of patterns. Matched files would not be transformed.

dynamicWrapper is used to specify dynamic imports. Below is the default.

const dynamicWrapper = (id) => {
  return `Promise.resolve(${id})`;
}

Virtual modules are always transformed.

constBindings is a boolean. If true, the plugin will use const instead of var to declare the variable. This usually happens when you try to re-export the global variable. Default is false.

Changelog

  • 0.13.0 (Nov 20, 2024)

    • Change: update include/exclude signature
  • 0.12.1 (Nov 15, 2024)

    • Fix: there is no debug hook in rollup 2.
  • 0.12.0 (Aug 11, 2024)

    • Change: throw on export all declaration.
    • Change: define variables with var, add constBindings option to use const instead.
    • Change: resolve identifiers as external.
  • 0.11.0 (Jun 27, 2024)

    • Fix: local variable conflict in export declaration.
    • Change: don't throw on parse error.
  • 0.10.0 (Apr 5, 2024)

    • Add: exports field in package.json to export typescript declaration.
  • 0.9.2 (Jan 21, 2024)

    • Fix: support rollup 4.9.6.
  • 0.9.1 (Nov 19, 2023)

    • Fix: type declaration.
  • 0.9.0 (Oct 28, 2023)

    • Breaking: bump to rollup@4.
  • 0.8.0 (May 12, 2023)

  • 0.7.2 (mar 9, 2023)

    • Add: typescript declaration.
  • 0.7.0 (Nov 21, 2022)

    • Breaking: bump to rollup@3.
  • 0.6.1 (Oct 21, 2020)

    • Fix: add an extra assignment when exporting globals.
  • 0.6.0 (Aug 14, 2020)

    • Breaking: bump to rollup@2.
  • 0.5.0 (Dec 8, 2019)

    • Add: dynamicWrapper option.
    • Add: now globals can be a function.
    • Bump dependencies/peer dependencies.
  • 0.4.0 (Sep 24, 2019)

    • Add: transform dynamic imports i.e. import("foo") => Promise.resolve(FOO).
  • 0.3.1 (Jun 6, 2019)

    • Fix: all export-from statements are incorrectly transformed.
    • Bump dependencies.
  • 0.3.0 (Mar 25, 2019)

    • Fix: temporary variable name conflicts.
    • Breaking: transform virtual modules. Now the plugin transforms proxy modules generated by commonjs plugin.
    • Bump dependencies.
  • 0.2.1 (Oct 2, 2018)

    • Fix: don't skip export statement.
  • 0.2.0 (Sep 12, 2018)

    • Change: use transform hook.
    • Add: rewrite conflicted variable names.
    • Add: handle export from.
  • 0.1.0 (Aug 5, 2018)

    • Initial release.