Create an explainer / hub page for unflagged require(ESM) support
Enter your suggestions in details:
The new unflagged require(ESM) support in Node.js is very exciting. It's starting to let a lot of tools move to ESM without feat of leaving dependents behind. 🚀
But, there isn't one single high-level, official resource I can find that users can be pointed to to understand the unflagged support.
- https://joyeecheung.github.io/blog/2024/03/18/require-esm-in-node-js/ is not official. It feels weird pointing folks to a third party platform. It also has a lot of details on historical context and decision-making that users who just want to learn the high level of the feature wouldn't want to have to read through. (it is a great blog post on its own though!)
- https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require is very technical and dives into the weeds of the module system.
Proposal: can the Node.js site have a page added dedicated to the unflagged require(ESM) support? I'd imagine it could contain:
- What "require(ESM)" is
- Quick examples of requiring an ES module from a CJS file
- What versions of Node.js have it
- Edit:
^20.19.0 || >=22.12.0seems to be the common support target post-18.x
- Edit:
- Quick FAQs such as TLA being unsupported
- Links to learn more on the official Node.js website
Sibling issue to #7440, intentionally with as similar an issue body as possible.
Thanks for opening the issue! I think this is what part of the package-examples aim to solve (e.g. in the Making ESM require-able chapter, the goal is to have some actual working examples there living side by side with the document), though this is still a WIP and I have not gotten to filling in the skeletons already laid out in there. Feel free to take a look at https://github.com/nodejs/package-examples/blob/main/CONTRIBUTING.md if anyone is interested ;)
@JoshuaKGoldberg please assign me this issue
Hi! You are more than welcome to work on resolving this issue, we'd actually really appreciate it!
However, we don't typically assign issues to users.