kentcdodds / babel-plugin-codegen

💥 Generate code at build-time
https://www.npmjs.com/package/babel-plugin-codegen
MIT License
348 stars 30 forks source link

Support importing npm modules by name #48

Open jesstelford opened 2 years ago

jesstelford commented 2 years ago

What:

Adds support for codegen.require('module-name') to load and codegen the main export of an npm module. Fixes #47.

Why:

I've created a reusable codegen which works great. However, once I published & consume the codegen as an npm module (@ceteio/next-layout-loader), it no longer works. More details in #47.

How:

Node's built-in require.resolve algorithm supports both relative paths, and module name specifiers. The second argument to require.resolve allows specifying where to begin the search, which mirrors the existing behaviour, but adds the ability to load modules from node_modules up the tree (should even work in monorepos!).

Checklist:

kentcdodds commented 2 years ago

Thanks for this @jesstelford! I'm fine to merge if existing tests pass. Unfortunately this project is using some out-dated packages and needs to be updated before CI can get passing and an automated release can go out for this feature.

The problem is that because I'm not actively using this package I can't dedicate any time to it. If you'd like to take a whack at updating all the packages as well as dropping support for unsupported versions of Node in our CI then I'd be willing to review and merge those PRs.