0.13.0 • Published 7 months ago

rollup-plugin-external-globals v0.13.0

Weekly downloads
4,015
License
MIT
Repository
github
Last release
7 months ago

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)

    • Bump dependencies. Update to magic-string@0.30
  • 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.
vite-plugin-jsdelivrck-cesium-mapkhodroinja-ui-core@infinitebrahmanuniverse/nolb-rollup-plugin-e@zxd2219/vite-plugin-cdn-import@everything-registry/sub-chunk-2680vite-plugin-m3cesiumweb-customwordpress-vite-pluginwgj-vite-plugin-cdn-importspirokit-native-basestorybook-builder-wdsvite-plugin-blockletvite-plugin-copy-cesiumvite-plugin-copy-configvite-plugin-csepdi-cesiumvite-plugin-import-cdn-fault-tolerantvite-plugin-inject-externalsvite-plugin-dpimapvite-plugin-earthvite-plugin-electron-cesiumvite-plugin-cdn-importvite-plugin-cdn-import-1vite-plugin-cdn-import-asyncvite-plugin-cdn-import-relyvite-plugin-cdn-import2vite-plugin-cdn-requirevite-plugin-cesiumvite-plugin-cesium-plusvite-plugin-cesium_zsqvite-plugin-cesium_zsqv2vite-plugin-chainui-algorandvite-plugin-fast-cdn-importvite-plugin-external-cdnvite-plugin-external-globalsvideojs-generate-rollup-configvitepluginpluscesium@doain/node@dofu/infra@dramasoft/property-editor@cocoon/rollup@cromwell/utils@coti-cvi/vite-plugin-cdn-importzbz-mapbox-gl@geit-micro/plugin-midendstitch-component-cli@banyinbanying/contenteditable@beanbag/frontend-buildkit@21torr/firefly1997ckf-ui-comp@decky/rollupxweb_3.0_component_libvue-testm-uivue3-wagmi-dome@form-creator1/element-plus@hwun-ling/vite-plugin-cesium@formvk/cli@formily/template@instantcommerce/cli@lokier/cli-wrappers-lego@isygis/roadprofile@itandu/utils@mozyun/formily-tpl@marsgames/vite-plugin-cdn-import@netless/vite-plugin-cdn-import@newpearl/cli@mylinkpi/widget-cli@noah-i/dev-il@mochsm/qb-app-cli@mochsm/test-publish@knapsack/build-tools@jbrowse/development-tools@kokimoki/cli@ranger-theme/vite-config@qorebase/app-cli@openk9/plugin-scripts@patchcab/core@ottowp/wp-vite@panels/scripts@spinnaker/scripts@spirokit/native-base@sogody/experiment-framework@sogody/scopexjs@sogody/template-framework@space8/vite-czm-pluginmpd-parser-1mrwu-climixenginemixengine-debugmixengine-plugin-debugopenblocks-clireact-multitouch-gesturesrice-ui2rebase-clislab-formily-tplinfo-ephalloid-js-sdkhalloid-ts-sdkhalloid-web-sdklihang-cli
0.13.0

7 months ago

0.12.1

7 months ago

0.11.0

12 months ago

0.12.0

10 months ago

0.10.0

1 year ago

0.9.2

1 year ago

0.9.0

2 years ago

0.9.1

2 years ago

0.7.2

2 years ago

0.8.0

2 years ago

0.7.3

2 years ago

0.7.1

3 years ago

0.6.1

5 years ago

0.6.0

5 years ago

0.5.0

6 years ago

0.4.0

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.0

7 years ago