Skip to content

Conversation

@andrewiggins
Copy link
Collaborator

I'm often wanting to step through the source of Preact or Signals, but doing this is difficult since we ship minified code. In this PR I add an option to microbundle to output a "debug" build. This debug build is just an unminified ESM bundle of the library.

Consumers of microbundle libraries can then setup an alias in their bundle to use this build output when they want to step through sources of libraries of microbundle libraries.

NOTE: This format DOES NOT support React-style development vs production builds. This format only produces an unminifed build of the same source that is minified in other builds. However it should only be used for development. We have tuned the minification options to produce better than average minification and so those minified builds should be used in production bundles.

@changeset-bot
Copy link

changeset-bot bot commented Oct 23, 2025

⚠️ No Changeset found

Latest commit: bf19e48

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@andrewiggins andrewiggins marked this pull request as draft October 23, 2025 21:58
Base automatically changed from format-repo to master October 24, 2025 01:08
@rschristian
Copy link
Collaborator

I'm often wanting to step through the source of Preact or Signals, but doing this is difficult since we ship minified code.

Not sure on your specific intent here, but a while back I toyed with doing just this with Preact and found it absurdly easy to break apps by pulling in two copies at once. Ensuring the entire module graph resolves just to the debug build is just as tricky as trying to avoid the dual package hazard and users aren't going to understand the intricacies.

I'm not against adding this, it may be useful for Microbundle users, but I don't think we can ship it with Preact stuff in particular. Way too easy for folks to break their apps and get the (incredibly opaque) __H errors.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 24, 2025

Size Change: 0 B

Total Size: 65.9 kB

ℹ️ View Unchanged
Filename Size
test/fixtures/alias-external/dist/alias-external.esm.mjs 85 B
test/fixtures/alias-external/dist/alias-external.js 80 B
test/fixtures/alias-external/dist/alias-external.umd.js 140 B
test/fixtures/alias/dist/alias-mapping.esm.mjs 62 B
test/fixtures/alias/dist/alias-mapping.js 62 B
test/fixtures/alias/dist/alias-mapping.umd.js 119 B
test/fixtures/async-iife-ts/dist/async-iife-ts.esm.mjs 113 B
test/fixtures/async-iife-ts/dist/async-iife-ts.js 110 B
test/fixtures/async-iife-ts/dist/async-iife-ts.umd.js 160 B
test/fixtures/async-iife-ts/dist/index.d.ts 20 B
test/fixtures/async-ts/dist/async-ts.esm.mjs 158 B
test/fixtures/async-ts/dist/async-ts.js 149 B
test/fixtures/async-ts/dist/async-ts.umd.js 246 B
test/fixtures/async-ts/dist/index.d.ts 78 B
test/fixtures/basic-babelrc/dist/basic-babelrc.esm.mjs 159 B
test/fixtures/basic-babelrc/dist/basic-babelrc.js 156 B
test/fixtures/basic-babelrc/dist/basic-babelrc.umd.js 197 B
test/fixtures/basic-compress-false/dist/basic-compress-false.esm.mjs 303 B
test/fixtures/basic-compress-false/dist/basic-compress-false.js 301 B
test/fixtures/basic-compress-false/dist/basic-compress-false.umd.js 427 B
test/fixtures/basic-css/dist/basic-css.css 107 B
test/fixtures/basic-css/dist/basic-css.esm.mjs 143 B
test/fixtures/basic-css/dist/basic-css.js 139 B
test/fixtures/basic-css/dist/basic-css.umd.js 228 B
test/fixtures/basic-dashed-external/dist/basic-dashed-external.esm.mjs 257 B
test/fixtures/basic-dashed-external/dist/basic-dashed-external.js 311 B
test/fixtures/basic-dashed-external/dist/basic-dashed-external.umd.js 401 B
test/fixtures/basic-flow/dist/basic-lib-flow.esm.mjs 105 B
test/fixtures/basic-flow/dist/basic-lib-flow.js 102 B
test/fixtures/basic-flow/dist/basic-lib-flow.umd.js 205 B
test/fixtures/basic-json/dist/basic-json.esm.mjs 128 B
test/fixtures/basic-json/dist/basic-json.js 125 B
test/fixtures/basic-json/dist/basic-json.umd.js 216 B
test/fixtures/basic-multi-source-css/dist/a.css 98 B
test/fixtures/basic-multi-source-css/dist/a.esm.mjs 134 B
test/fixtures/basic-multi-source-css/dist/a.js 130 B
test/fixtures/basic-multi-source-css/dist/a.umd.js 226 B
test/fixtures/basic-multi-source-css/dist/b.css 96 B
test/fixtures/basic-multi-source-css/dist/b.esm.mjs 135 B
test/fixtures/basic-multi-source-css/dist/b.js 131 B
test/fixtures/basic-multi-source-css/dist/b.umd.js 227 B
test/fixtures/basic-multi-source/dist/a.esm.mjs 78 B
test/fixtures/basic-multi-source/dist/a.js 73 B
test/fixtures/basic-multi-source/dist/a.umd.js 134 B
test/fixtures/basic-multi-source/dist/b.esm.mjs 78 B
test/fixtures/basic-multi-source/dist/b.js 73 B
test/fixtures/basic-multi-source/dist/b.umd.js 134 B
test/fixtures/basic-no-compress/dist/basic-no-compress.esm.mjs 301 B
test/fixtures/basic-no-compress/dist/basic-no-compress.js 299 B
test/fixtures/basic-no-compress/dist/basic-no-compress.umd.js 423 B
test/fixtures/basic-no-pkg-main/dist/basic-no-pkg-main.js 313 B
test/fixtures/basic-node-internals/dist/basic-node-internals.js 234 B
test/fixtures/basic-ts/dist/basic-lib-ts.esm.mjs 157 B
test/fixtures/basic-ts/dist/basic-lib-ts.js 153 B
test/fixtures/basic-ts/dist/basic-lib-ts.umd.js 235 B
test/fixtures/basic-ts/dist/car.d.ts 116 B
test/fixtures/basic-ts/dist/index.d.ts 86 B
test/fixtures/basic-tsx/dist/basic-lib-tsx.esm.mjs 253 B
test/fixtures/basic-tsx/dist/basic-lib-tsx.js 246 B
test/fixtures/basic-tsx/dist/basic-lib-tsx.umd.js 330 B
test/fixtures/basic-tsx/dist/index.d.ts 71 B
test/fixtures/basic-with-cwd/basic/dist/basic.esm.mjs 223 B
test/fixtures/basic-with-cwd/basic/dist/basic.js 219 B
test/fixtures/basic-with-cwd/basic/dist/basic.umd.js 299 B
test/fixtures/basic/dist/basic-lib.esm.mjs 226 B
test/fixtures/basic/dist/basic-lib.js 223 B
test/fixtures/basic/dist/basic-lib.umd.js 305 B
test/fixtures/class-decorators-ts/dist/class-decorators-ts.esm.mjs 390 B
test/fixtures/class-decorators-ts/dist/class-decorators-ts.js 387 B
test/fixtures/class-decorators-ts/dist/class-decorators-ts.umd.js 452 B
test/fixtures/class-decorators-ts/dist/index.d.ts 126 B
test/fixtures/class-properties/dist/class-properties.esm.mjs 139 B
test/fixtures/class-properties/dist/class-properties.js 134 B
test/fixtures/class-properties/dist/class-properties.umd.js 234 B
test/fixtures/css-modules--false/dist/css-modules--false.css 114 B
test/fixtures/css-modules--false/dist/css-modules--false.esm.mjs 52 B
test/fixtures/css-modules--false/dist/css-modules--false.js 49 B
test/fixtures/css-modules--false/dist/css-modules--false.umd.js 156 B
test/fixtures/css-modules--null/dist/css-modules--null.css 118 B
test/fixtures/css-modules--null/dist/css-modules--null.esm.mjs 111 B
test/fixtures/css-modules--null/dist/css-modules--null.js 110 B
test/fixtures/css-modules--null/dist/css-modules--null.umd.js 200 B
test/fixtures/css-modules--string/dist/css-modules--string.css 144 B
test/fixtures/css-modules--string/dist/css-modules--string.esm.mjs 168 B
test/fixtures/css-modules--string/dist/css-modules--string.js 166 B
test/fixtures/css-modules--string/dist/css-modules--string.umd.js 263 B
test/fixtures/css-modules--true/dist/css-modules--true.css 115 B
test/fixtures/css-modules--true/dist/css-modules--true.esm.mjs 141 B
test/fixtures/css-modules--true/dist/css-modules--true.js 139 B
test/fixtures/css-modules--true/dist/css-modules--true.umd.js 230 B
test/fixtures/custom-babelrc/dist/custom-babelrc.esm.mjs 261 B
test/fixtures/custom-babelrc/dist/custom-babelrc.js 254 B
test/fixtures/custom-babelrc/dist/custom-babelrc.umd.js 345 B
test/fixtures/custom-outputs-alt/dist/custom-outputs-alt.cjsmain.js 232 B
test/fixtures/custom-outputs-alt/dist/custom-outputs-alt.esmodule.mjs 158 B
test/fixtures/custom-outputs-alt/dist/custom-outputs-alt.jsnextmain.mjs 236 B
test/fixtures/custom-outputs-alt/dist/custom-outputs-alt.unpkg.js 315 B
test/fixtures/custom-outputs/dist/custom-outputs.exportsx.mjs 154 B
test/fixtures/custom-outputs/dist/custom-outputs.js 225 B
test/fixtures/custom-outputs/dist/custom-outputs.modulex.mjs 231 B
test/fixtures/custom-outputs/dist/custom-outputs.umdx.js 307 B
test/fixtures/custom-source-with-cwd/custom-source/dist/custom-src.esm.mjs 226 B
test/fixtures/custom-source-with-cwd/custom-source/dist/custom-src.js 222 B
test/fixtures/custom-source-with-cwd/custom-source/dist/custom-src.umd.js 304 B
test/fixtures/custom-source/dist/custom-source.esm.mjs 226 B
test/fixtures/custom-source/dist/custom-source.js 222 B
test/fixtures/custom-source/dist/custom-source.umd.js 306 B
test/fixtures/default-named/dist/default-named.esm.mjs 116 B
test/fixtures/default-named/dist/default-named.js 97 B
test/fixtures/default-named/dist/default-named.umd.js 201 B
test/fixtures/define-expression/dist/define-expression.esm.mjs 56 B
test/fixtures/define/dist/define.esm.mjs 55 B
test/fixtures/define/dist/define.js 55 B
test/fixtures/define/dist/define.umd.js 109 B
test/fixtures/esnext-ts/dist/esnext-ts.esm.mjs 1.04 kB
test/fixtures/esnext-ts/dist/esnext-ts.js 1.03 kB
test/fixtures/esnext-ts/dist/esnext-ts.umd.js 1.1 kB
test/fixtures/esnext-ts/dist/index.d.ts 68 B
test/fixtures/inline-source-map/dist/inline-source-map.esm.mjs 759 B
test/fixtures/inline-source-map/dist/inline-source-map.js 753 B
test/fixtures/inline-source-map/dist/inline-source-map.umd.js 841 B
test/fixtures/jsx/dist/jsx.esm.mjs 269 B
test/fixtures/jsx/dist/jsx.js 263 B
test/fixtures/jsx/dist/jsx.umd.js 340 B
test/fixtures/macro/dist/macro-lib.esm.mjs 88 B
test/fixtures/macro/dist/macro-lib.js 84 B
test/fixtures/macro/dist/macro-lib.umd.js 187 B
test/fixtures/mangle-json-file/dist/mangle-json-file.esm.mjs 147 B
test/fixtures/mangle-json-file/dist/mangle-json-file.js 144 B
test/fixtures/mangle-json-file/dist/mangle-json-file.umd.js 235 B
test/fixtures/minify-config-boolean/dist/minify-config-boolean.esm.mjs 160 B
test/fixtures/minify-config-boolean/dist/minify-config-boolean.js 153 B
test/fixtures/minify-config-boolean/dist/minify-config-boolean.umd.js 255 B
test/fixtures/minify-config/dist/minify-config.esm.mjs 141 B
test/fixtures/minify-config/dist/minify-config.js 137 B
test/fixtures/minify-config/dist/minify-config.umd.js 225 B
test/fixtures/minify-path-config/dist/minify-path-config.esm.mjs 149 B
test/fixtures/minify-path-config/dist/minify-path-config.js 146 B
test/fixtures/minify-path-config/dist/minify-path-config.umd.js 237 B
test/fixtures/minify-path-parent-dir-with-cwd/minify-path-parent-dir/dist/minify-path-parent-dir.esm.mjs 151 B
test/fixtures/minify-path-parent-dir-with-cwd/minify-path-parent-dir/dist/minify-path-parent-dir.js 148 B
test/fixtures/minify-path-parent-dir-with-cwd/minify-path-parent-dir/dist/minify-path-parent-dir.umd.js 241 B
test/fixtures/modern-generators/dist/modern-generators.esm.mjs 281 B
test/fixtures/modern-generators/dist/modern-generators.js 279 B
test/fixtures/modern-generators/dist/modern-generators.modern.mjs 157 B
test/fixtures/modern-generators/dist/modern-generators.umd.js 359 B
test/fixtures/modern/dist/modern-lib.modern.mjs 152 B
test/fixtures/name-custom-amd/dist/name-custom-amd.esm.mjs 229 B
test/fixtures/name-custom-amd/dist/name-custom-amd.js 225 B
test/fixtures/name-custom-amd/dist/name-custom-amd.umd.js 311 B
test/fixtures/name-custom-cli/dist/name-custom.esm.mjs 226 B
test/fixtures/name-custom-cli/dist/name-custom.js 223 B
test/fixtures/name-custom-cli/dist/name-custom.umd.js 310 B
test/fixtures/no-pkg-name/dist/no-pkg-name.esm.mjs 227 B
test/fixtures/no-pkg-name/dist/no-pkg-name.js 224 B
test/fixtures/no-pkg-name/dist/no-pkg-name.umd.js 308 B
test/fixtures/no-pkg/dist/no-pkg.esm.mjs 224 B
test/fixtures/no-pkg/dist/no-pkg.js 221 B
test/fixtures/no-pkg/dist/no-pkg.umd.js 302 B
test/fixtures/optional-chaining-ts/dist/index.d.ts 108 B
test/fixtures/optional-chaining-ts/dist/optional-chaining-ts.esm.mjs 154 B
test/fixtures/optional-chaining-ts/dist/optional-chaining-ts.js 148 B
test/fixtures/optional-chaining-ts/dist/optional-chaining-ts.umd.js 247 B
test/fixtures/parameters-rest-closure/dist/parameters-rest-closure.esm.mjs 203 B
test/fixtures/parameters-rest-closure/dist/parameters-rest-closure.js 192 B
test/fixtures/parameters-rest-closure/dist/parameters-rest-closure.umd.js 284 B
test/fixtures/pretty/dist/pretty.esm.mjs 6.58 kB
test/fixtures/pretty/dist/pretty.js 6.56 kB
test/fixtures/pretty/dist/pretty.umd.js 6.71 kB
test/fixtures/publish-config/dist/bar.js 87 B
test/fixtures/publish-config/dist/foo.d.ts 60 B
test/fixtures/pure/dist/pure.esm.mjs 108 B
test/fixtures/pure/dist/pure.js 98 B
test/fixtures/pure/dist/pure.umd.js 197 B
test/fixtures/raw/dist/raw.esm.mjs 1.41 kB
test/fixtures/raw/dist/raw.js 1.4 kB
test/fixtures/raw/dist/raw.umd.js 1.52 kB
test/fixtures/shebang/dist/shebang.esm.mjs 125 B
test/fixtures/shebang/dist/shebang.js 118 B
test/fixtures/shebang/dist/shebang.umd.js 216 B
test/fixtures/terser-annotations/dist/terser-annotations.esm.mjs 179 B
test/fixtures/terser-annotations/dist/terser-annotations.js 171 B
test/fixtures/terser-annotations/dist/terser-annotations.umd.js 257 B
test/fixtures/ts-custom-declaration/dist/index.esm.mjs 100 B
test/fixtures/ts-custom-declaration/dist/index.js 89 B
test/fixtures/ts-custom-declaration/dist/index.umd.js 205 B
test/fixtures/ts-declaration/dist/index.esm.mjs 100 B
test/fixtures/ts-declaration/dist/index.js 89 B
test/fixtures/ts-declaration/dist/index.umd.js 201 B
test/fixtures/ts-jsx/dist/index.d.ts 52 B
test/fixtures/ts-jsx/dist/ts-jsx.esm.mjs 163 B
test/fixtures/ts-jsx/dist/ts-jsx.js 158 B
test/fixtures/ts-jsx/dist/ts-jsx.umd.js 251 B
test/fixtures/ts-mixed-exports/dist/car.d.ts 116 B
test/fixtures/ts-mixed-exports/dist/index.d.ts 92 B
test/fixtures/ts-mixed-exports/dist/ts-mixed-exports.esm.mjs 168 B
test/fixtures/ts-mixed-exports/dist/ts-mixed-exports.js 160 B
test/fixtures/ts-mixed-exports/dist/ts-mixed-exports.umd.js 261 B
test/fixtures/ts-module/dist/foo.d.ts 60 B
test/fixtures/ts-module/dist/index.d.ts 63 B
test/fixtures/ts-module/dist/ts-module.esm.mjs 108 B
test/fixtures/ts-module/dist/ts-module.js 97 B
test/fixtures/ts-module/dist/ts-module.umd.js 197 B
test/fixtures/visualizer/dist/visualizer.esm.mjs 119 B
test/fixtures/visualizer/dist/visualizer.js 177 B
test/fixtures/visualizer/dist/visualizer.umd.js 259 B
test/fixtures/worker-loader/dist/worker-35b22e56.js 125 B
test/fixtures/worker-loader/dist/worker-7e1b9921.js 107 B
test/fixtures/worker-loader/dist/worker-loader.esm.mjs 181 B
test/fixtures/worker-loader/dist/worker-loader.modern.mjs 174 B

compressed-size-action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants