ecmacomp

Compile javascript modules, optimize them with prepack and terser if NODE_ENV is production, and do more optimisations from this project. Reduce your code in production today!

Usage no npm install needed!

<script type="module">
  import ecmacomp from 'https://cdn.skypack.dev/ecmacomp';
</script>

README

ecmacomp Build Status

Compile javascript modules, optimize them with prepack and terser if NODE_ENV is production, and do more optimisations from this project. Reduce your code in production today!

Further optimizations are coming up:

  • Caching React elements in variables and modifying them before passing them to React.createElement
  • Turning fs.readFileSync and other sync APIs into their Promise counterparts, and turning every function above the call into an async function
  • Removing react completely using rawact
  • Reducing GC allocations
  • Caching some function results
  • ...And other amazing optimizations

Usage (CLI)

You can disable rollup or prepack (to disable terser, use the NODE_ENV environment variable NODE_ENV=production ecmacomp ...)

$ ecmacomp input.js [--norollup] [--noprepack] [--public dir] [--output file]

Usage (JS API)

await require('ecmacomp')({ filename: 'input.js' })  // Or 'function code....'

Hacking ecmacomp

To hack on ecmacomp, clone this repository (git clone https://github.com/fabiosantoscode/ecmacomp), cd to it, run npm i, write a test in the appropriate place, respect the lint (npm run lint) and start hacking :)

This CLI command reveals the bytecode for a piece of javascript:

$ ecmacomp --parse input.js

You can use this bytecode as reference because it's the bytecode used in all the optimisations.