Level / level

Universal abstract-level database for Node.js and browsers.
MIT License
1.55k stars 106 forks source link

ESM support #243

Open pleerock opened 7 months ago

pleerock commented 7 months ago

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.

vweevers commented 7 months ago

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.

pleerock commented 7 months ago

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).

vweevers commented 7 months ago

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

pleerock commented 7 months ago

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