developit / microbundle

📦 Zero-configuration bundler for tiny modules.
https://npm.im/microbundle
MIT License
8.03k stars 362 forks source link

Option to use a faster transpile/bundle engine? #943

Open quantizor opened 2 years ago

quantizor commented 2 years ago

esbuild and swc come to mind, being able to sidestep TSC for build speed would be amazing.

https://www.npmjs.com/package/rollup-plugin-swc https://www.npmjs.com/package/rollup-plugin-esbuild

developit commented 2 years ago

This would be nice, though both of those options would dramatically increase the on-disk size of Microbundle. Perhaps we could move to ESBuild at the same time as we ship a precompiled version of Microbundle, so the package would be a single 1mb JS file and a ~10mb esbuild dep for the given platform.

quantizor commented 2 years ago

@developit yeah that would definitely work!

mmkal commented 2 years ago

Hey @probablyup how are you!!

I don't know much about SWC except as a happy end user, but I just opened #975 as a PoC - a way to effectively make @swc/core an optional peer dependency. All it adds is a single rollup plugin as a dependency, and only "activates" it when the end user has @swc/core installed.

I thought this might be an easier to incrementally adopt, lighter weight approach than shipping a whole different precompiled version of Microbundle. Also it'd be opt in, so people who are reliant on the current babel-based version of this library can keep using it until swc+microbundle has full feature parity. Some more details in the PR, @developit would be great to get your thoughts, I'd love to see something like this in microbundle!