Hacker News new | past | comments | ask | show | jobs | submit login

I understand the whole CommonJS Vs imports situation.

I have been that vocal minority that keeps complaining about CommonJS support to library authors. But I have given it up for the greater good.

we have a standard now, CommonJS needs to go, why keep pushing non standard stuff in a 2023 article.




Yes, when working with Angular, you'll see build warnings about CommonJS dependencies.

> ▲ Module 'some-library' used by 'src/app/some.component.ts' is not ESM

> CommonJS or AMD dependencies can cause optimization bailouts.

> For more information see: https://angular.io/guide/build#configuring-commonjs-dependen...


The problem is that you can import commonjs modules in ESM but not the other way around. For stepci (https://stepci.com) we have chosen to not support ESM for this very reason. We want that the library “just works” for all our users


You cannot import Common JS from standard JS modules in an environment that doesn't support Common JS, like... all browsers.

Everything should be published as standard modules at this point.


If you're using TypeScript, you have a build step anyway, so you can easily use ESM.


Remember we’re using Node. I don’t think TypeScript compiler supports importing ESM into CommonJS files.

Basically we will have to move the library to ESM and then use a bundler like esbuild to compile it to CJS as well for compatibility. It’s a mess


Try using the tsx package for running Node in situations like this. It magically “just works”

https://www.npmjs.com/package/tsx


> It’s a mess

I think everyone agrees about this.

What people can’t agree about is how to fix it.


I haven’t really struggled too much here.

Maybe an aversion to bundlers exists, but I think tsup and vite are great and simple. We have turbopack on the horizon too.

For small projects I don’t even need a configuration file for tsup to target both formats. For larger more complex projects vite configs tend to be under 50 LoC.


Exactly.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: