Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Bundler engineer here. ESM is great when it comes to build-time optimisations. When a bundler runs into CJS code it literally deopts the output to accommodate - so from that side it's amazing.

But also, there's a special place in hell for the people that decided to add default exports, "export * from" and top level await.

Commonjs is also very weird as a "module" instance can be reassigned to a reference of another module

module.exports = require('./foo')

and there's no way to do this in ESM (for good reason, but also no one warned us). In fact major projects like React use CJS exports and the entire project cannot be optimized by bundlers. So, rather than porting to ESM, they created a compiler LOL



If I may, the evil is not in the top level await but in the use of a top level await in a module that exports. That is evil. But a top level await in a programs main script seems ok to me.


> But also, there's a special place in hell for the people that decided to add […] top level await.

There is also a special place in extra-hell for those who export a function named 'then'.


Wait what? What would that module even be for?!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: