jorinvo / edn-data

EDN parser and generator that works with plain JS data, with support for TS and node streams
MIT License
97 stars 7 forks source link

Use as ES6 module in browser? #22

Open borkdude opened 11 months ago

borkdude commented 11 months ago

I'd like to use this library in the squint playground. It seems I'm only able to do this via esm.sh:

example

The esm.sh service rewrites all the module.exports + require stuff to proper ES6 modules. Would it be an idea to publish ES6 modules directly, such that this can be used from unpkg.com etc?

jorinvo commented 11 months ago

Hi @borkdude :wave: That sounds useful! Makes me happy to see this library being used :slightly_smiling_face: I haven't worked with ES6 modules before. What do we have to change to make them work? Any hints how to do that are very welcome. I suppose it's possible to support ES6 modules while also keep supporting Node.js and Typescript, right? If it's easier for you to just open a PR, you are also more than welcome :blush:

borkdude commented 11 months ago

I'll have a look later, just dropping this link as a note for now:

https://dev.to/a0viedo/nodejs-typescript-and-esm-it-doesnt-have-to-be-painful-438e

jacoobes commented 2 days ago

your project has no dependencies, the easiest way to have esm cjs interop if you compile to commonjs and have named exports:

exports.x = x
exports.y = y

or a default export:

exports.default = {
    x,
    y
}

another requirement is that the typescript project cannot use require (or it has to be shimmed). the current setup you have with tsc compiles to require

this way, everything is consumable in both esm and cjs environments

jacoobes commented 2 days ago

esbuild may be a solution to this: