level icon indicating copy to clipboard operation
level copied to clipboard

ESM support

Open pleerock opened this issue 1 year ago • 5 comments

ESM support is required these days in most projects. Would be great to have ESM support. Right now using stuff like __dirname blocks usages of these packages in ESM modules.

pleerock avatar Feb 28 '24 10:02 pleerock

Under which runtime? It will work fine in Node.js and probably that new Bare thing too, but I don't know about Bun, Deno, LLRT. And when using a bundler, that bundler can be configured to inject __dirname.

Moving to ESM is a disruptive change, because then the modules can't be used from CJS anymore. I'm not saying it will never happen, but we should not take it lightly.

vweevers avatar Feb 28 '24 11:02 vweevers

In my case I have Node.js runtime (via Electron), the bundler I'm using is Vite, however it doesn't replace __dirname from Level package. Not sure why, maybe because Level is used in another library which is ESM module and dependency of the main (Electron, it's Node.js process) package (all inside monorepo).

pleerock avatar Feb 28 '24 11:02 pleerock

Maybe you need https://github.com/rollup/plugins/tree/master/packages/esm-shim.

vweevers avatar Feb 28 '24 11:02 vweevers

@vweevers thanks for the hint, I'll try it.

pleerock avatar Feb 28 '24 12:02 pleerock