developit / microbundle-2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Microbundle 2

What if microbundle could figure out how to bundle your library based on the "exports" field you already have to define in your package.json?

And what if it was also absurdly fast, and one 500kb file with a single native dependency?

npm i -g microbundle-2
# or
npx microbundle-2

This is a reimplementation of Microbundle built on ESBuild.

help

Simple Example

You write a package.json that looks like this:

{
  "name": "simple",
  "type": "module",
  "exports": {
	"import": "./dist/lib.js",
	"default": "./dist/lib.cjs"
  }
}
simple example package

Multiple entries

Just define your package exports the way you already have to for Node/Vite/etc:

{
  "name": "multi-entry",
  "type": "module",
  "exports": {
    ".": {
      "types": "./dist/lib.d.ts",
      "import": "./dist/lib.js",
      "default": "./dist/lib.cjs"
    },
    "./a": {
      "types": "./dist/a.d.ts",
      "import": "./dist/a.js",
      "default": "./dist/a.cjs"
    },
    "./b": {
      "types": "./dist/b.d.ts",
      "import": "./dist/b.js",
      "default": "./dist/b.cjs"
    }
  }
}
simple multi-entry package example

This example has a dynamic import, which you can see produced a ./c chunk. Both the ESM and CJS versions work the same way!

Wildcards/patterns

Wildcard/pattern exports are also supported:

{
  "name": "patterns",
  "type": "module",
  "exports": {
    ".": {
      "types": "./build/index.d.ts",
      "import": "./build/index.js",
      "default": "./build/index.cjs"
    },
    "./lib/*": {
      "types": "./build/lib/*.d.ts",
      "import": "./build/lib/*.js",
      "default": "./build/lib/*.cjs"
    },
    "./components/*": {
      "source": "./lib/components/*.tsx",
      "types": "./build/components/*.d.ts",
      "import": "./build/components/*.js",
      "default": "./build/components/*.cjs"
    }
  }
}
complex multi-entry example using wildcard/pattern exports

About


Languages

Language:JavaScript 100.0%