JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6063
  • Score
    100M100P100Q124745F
  • License MIT

Serialize a module into an easier format to work with

Package Exports

  • babel-explode-module

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (babel-explode-module) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

babel-explode-module

Serialize a module into an easier format to work with

import {foo, bar} from "mod";

export default function() {
  // ...
}

const baz = 42,
      bat = class Bat {};

export {
  baz,
  bat
};

Creating this AST:

Program
  body:
    - ImportDeclaration
        specifiers:
          - ImportSpecifier
          - ImportSpecifier
    - ExportDefaultDeclaration
        declaration: FunctionDeclaration
    - VariableDeclaration
        declarations:
          - VariableDeclarator
          - VariableDeclarator
    - ExportNamedDeclaration
        specifiers:
          - ExportSpecifier
          - ExportSpecifier

Will be exploded to this:

{
  imports: [
    { kind: "value", local: "foo", external: "foo", source: "mod", loc: {...} },
    { kind: "value", local: "bar", external: "bar", source: "mod", loc: {...} },
  ],
  exports: [
    { local: "_default", external: "default", loc: {...} },
    { local: "baz", external: "baz", loc: {...} },
    { local: "bat", external: "bat", loc: {...} },
  },
  statements: [
    { type: "FunctionDeclaration" },
    { type: "VariableDeclaration", declarations: VariableDeclarator },
    { type: "VariableDeclaration", declarations: VariableDeclarator },
  ],
}

Serializes imports/exports to an easy to work with format

// input
import a, {b} from "mod";
import * as c from "mod";
export default function d() {}
export {e, f as g};
export {default as h} from "mod";
export * from "mod";
// output
{
  imports: [
    { kind: "value", local: "a", external: "a", source: "mod" },
    { kind: "value", local: "b", external: "b", source: "mod" },
    { kind: "value", local: "c", source: "d" },
  ],
  exports: [
    { local: "d", external: "d" },
    { local: "e", external: "e" },
    { local: "f", external: "g" },
    { local: "default", external: "g", source: "mod" },
    { source: "mod" },
  ]
}

Simplifies declarations to create 1 binding per statement (i.e. variables)

// input
function a() {}
var b,
    c;
// output (printed)
function a() {}
var b;
var c;

Splits export values away from their exports

// input
export function a() {}
export default function() {}
// output (printed)
function a() {}
var _default = function() {};
export {a};
export default _default;