Open lastmjs opened 5 years ago
Pull requests are welcome.
If you can get rid of the requires and support ES modules I wouldn't see why that wouldn't be a good thing.
Currently it's not really on any of our radars. Could you maybe explain what the use case is a little bit more?
Thanks.
Asking a friend, he recommended we wait for NodeJS to support ES modules.
Since a lot of our dependencies are NodeJS and don't have typescript support, it is difficult at this time.
Sounds reasonable, thanks!
On Tue, Apr 9, 2019, 3:24 AM Jonathan Underwood notifications@github.com wrote:
Asking a friend, he recommended we wait for NodeJS to support ES modules.
Since a lot of our dependencies are NodeJS and don't have typescript support, it is difficult at this time.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/bitcoinjs/bitcoinjs-lib/issues/1380#issuecomment-481174005, or mute the thread https://github.com/notifications/unsubscribe-auth/AGrSjyxpQM_hggHXXfjddIjZzOZE-zQGks5vfFxBgaJpZM4cjmCG .
package.json
has a de facto standard module
field that when specified is used by most common web bundler tools (like webpack, rollup, browserify w/ a plugin, etc).
This allows the npm package to add a new directory next to src
that contains the ES module js files, and a corresponding entry in package.json (for example: "module": "./module/index.js"
).
The existing src
output and "main": "./src/index.js"
entry can be left as is, and regular Node projects will be unaffected.
This should be revisited since ES Modules have had time to cook and get more adoption. It seems like we'd need to migrate a lot of things (like Buffer) to get full browser support though. Supporting Web Crypto (which iirc is now supported in NodeJS) would also change a lot of the APIs to use async.
Thoughts on whether a full ESM library would be better than some sort of hybrid thing? I publish hybrid packages for tiny-secp256k1 and uint8array-tools... but a lot of bundlers still have trouble with them apparently.
It would be great if the library could support ES modules. It would be nice to use an ES module build directly in the browser without a bundler, or use the TypeScript code directly. The use of requires in the source code precludes this