esbuild-plugin-babel-flow

0.0.5 • Public • Published

esbuild-plugin-babel-flow

Esbuild plugin for transformation of code with Flow annotations


Esbuild plugins have limitations to allow developers to hook into every part of the bundling process. This is a deliberate attempt to prevent creating performance bottlenecks during bundling. Thankfully, Babel, a javascript code transformer allows use to transform code during the code loading event of the esbuild bundling process. esbuild-plugin-babel-flow under the hood uses babel's transform api to strip javascript code of flow annotations for safe execution in a javascript environment.

Install

npm install esbuild-plugin-babel-flow --save-dev

Usage

config file esbuild.config.js

esbuild
	.build({
		entryPoints: ['example.flow.js'],
		write: true,
		bundle: true,
		outdir: 'dist',
		plugins: [babelFlowPlugin()],
	})
	.catch(() => process.exit(1));

input file example.flow.js

// @flow

function foo(x: ?number): string {
	if (x) {
		return JSON.stringify(x);
	}
	return 'default string';
}

foo(55);

bundled output dist/example.flow.js

(() => {
	// example.flow.js
	function foo(x) {
		if (x) {
			return JSON.stringify(x);
		}
		return 'default string';
	}
	foo(55);
})();

package.json

{
	"type": "module",
	"scripts": {
		"start": "node esbuild.config.js"
	}
}

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i esbuild-plugin-babel-flow

Weekly Downloads

4

Version

0.0.5

License

ISC

Unpacked Size

4.16 kB

Total Files

4

Last publish

Collaborators

  • henrhie35