Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Export createDevServerMiddleware from cli #2605

Merged
merged 1 commit into from
Feb 19, 2025

Conversation

robhogan
Copy link
Collaborator

Summary

@react-native/community-cli-plugin depends on createDevServerMiddleware from @react-native-community/cli-server-api. @react-native/community-cli-plugin currently declares an optional peer dependency on @react-native-community/cli-server-api, however because the latter isn't a dependency of react-native or the community template, the peer dependency is not available to package managers that enforce isolated node_modules - see facebook/react-native#47309.

Rather than add an unnecessary dependency to the template (react-native-community/template#105), my proposal is to have @react-native/community-cli-plugin depend only on @react-native-community/cli, switch to a peer dependency on that package, because that is a dependency of the community template and therefore will be resolvable.

For that to work, we need to re-export createDevServerMiddleware from @react-native-community/cli, which already has a dependency on @react-native-community/cli-server-api:

"@react-native-community/cli-server-api": "16.0.2",

Test Plan

yarn build, verify createDevServerMiddleware is exported from cli/build/index.js:

Object.defineProperty(exports, "createDevServerMiddleware", {
  enumerable: true,
  get: function () {
    return _cliServerApi().createDevServerMiddleware;
  }
});

Checklist

  • Documentation is up to date.
  • Follows commit message convention described in CONTRIBUTING.md.
  • For functional changes, my test plan has linked these CLI changes into a local react-native checkout (instructions).

@thymikee
Copy link
Member

@huntie you're ok with that?

facebook-github-bot pushed a commit to facebook/react-native that referenced this pull request Feb 19, 2025
Summary:
`react-native/community-cli-plugin` depends on `createDevServerMiddleware` from `react-native-community/cli-server-api`. 

`react-native/community-cli-plugin` currently [declares an optional peer dependency](https://github.com/facebook/react-native/blob/bae895500052bda2f55e1832b0c8a63a1b449de3/packages/community-cli-plugin/package.json#L39-L45) on `react-native-community/cli-server-api`, however because the latter isn't a dependency of `react-native` or the community template, the peer dependency is not available to package managers that enforce isolated node_modules - see #47309.

Rather than add an unnecessary dependency to the template (like [this](react-native-community/template#105)), my proposal is to switch to a peer dependency on only `react-native-community/cli`, because that *is* a dependency of the community template and therefore will be resolvable.

Because `react-native-community/cli` doesn't re-export `createDevServerMiddleware` from its dependency on `cli-server-api`, we need to resolve the latter through the former. This can be cleaned up once a re-export lands - react-native-community/cli#2605.

Changelog:
[GENERAL][FIXED] Fix registering of `start` and `bundle` commands with community CLI and isolated node_modules.

Differential Revision: D69848688
Copy link
Collaborator

@huntie huntie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@thymikee Yup. Looks good across both PRs 👍🏻

@thymikee thymikee merged commit 73d3e12 into main Feb 19, 2025
4 of 8 checks passed
@thymikee thymikee deleted the robhogan/reexport-create-server-middleware branch February 19, 2025 13:45
facebook-github-bot pushed a commit to facebook/react-native that referenced this pull request Feb 19, 2025
…li (#49518)

Summary:
Pull Request resolved: #49518

`react-native/community-cli-plugin` depends on `createDevServerMiddleware` from `react-native-community/cli-server-api`.

`react-native/community-cli-plugin` currently [declares an optional peer dependency](https://github.com/facebook/react-native/blob/bae895500052bda2f55e1832b0c8a63a1b449de3/packages/community-cli-plugin/package.json#L39-L45) on `react-native-community/cli-server-api`, however because the latter isn't a dependency of `react-native` or the community template, the peer dependency is not available to package managers that enforce isolated node_modules - see #47309.

Rather than add an unnecessary dependency to the template (like [this](react-native-community/template#105)), my proposal is to switch to a peer dependency on only `react-native-community/cli`, because that *is* a dependency of the community template and therefore will be resolvable.

Because `react-native-community/cli` doesn't re-export `createDevServerMiddleware` from its dependency on `cli-server-api`, we need to resolve the latter through the former. This can be cleaned up once a re-export lands - react-native-community/cli#2605.

Changelog:
[GENERAL][FIXED] Fix registering of `start` and `bundle` commands with community CLI and isolated node_modules.

Reviewed By: huntie

Differential Revision: D69848688

fbshipit-source-id: 009b8ffd43b2ab2d84fcc71e9e48382eb8950bb1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants