babel-plugin-codegen icon indicating copy to clipboard operation
babel-plugin-codegen copied to clipboard

Support importing npm modules by name

Open jesstelford opened this issue 4 years ago • 1 comments

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:

  • [x] ~Documentation~ n/a
  • [ ] Tests. ?? How would I test this?
  • [x] Ready to be merged

jesstelford avatar Dec 29 '21 04:12 jesstelford

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.

kentcdodds avatar Dec 29 '21 04:12 kentcdodds