Skip to content

Commit

Permalink
Bump RN CLI, add @react-native/metro-config to template (#36623)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: facebook/react-native#36623

Changelog:
[General][Changed] - The default `metro.config.js` in apps now extends `react-native/metro-config`, and should be updated in existing apps.

~~`react-native/rn-get-polyfills.js` is removed and should be updated to `react-native/js-polyfills` in existing apps (this is part of the new default config).~~

#publish-packages-to-npm

## Context

### React Native Metro config → React Native repo (facebook/react-native#36502)

We (the React Native team) are aiming to relocate the default Metro config for React Native out of `react-native-community/cli-plugin-metro` and **into the React Native repo + app template** as a new `react-native/metro-config` package.

This is the first (and minimum viable) phase we can ship to separate the release process of Metro from RN CLI in order to reduce coupling and iterate faster for our users.

**See full motivation, design, and test plan (which previewed the CLI bump) here: facebook/react-native#36502

## Changes

NOTE: This PR is pending the inclusion of a bump to `react-native-community/cli`, and will be sequenced after react-native-community/cli#1875 is merged.

- Upgrade `react-native-community/cli` to `11.0.0`, upgrade all `metro` packages to `0.76.0` (version distributed in this CLI release).
- Update the `metro.config.js` file in `packages/react-native/template/`.
    - Now merges defaults from `react-native/metro-config`, and can be used with CLI >= 11.0.0.
- Update the `metro.config.js` files for `packages/react-native/` and `packages/rn-tester/` (these are integration test locations).
    - Now merges defaults from `react-native/metro-config`, and can be used with CLI >= 11.0.0.

Changes to `react-native/metro-config` — `0.72.1` (prepared but not depended on yet):

- Export `mergeConfig` util (removing direct `metro-config` dependency in consuming projects).
- Explicitly depend on `metro-react-native-babel-transformer` and `metro-runtime` (transitively included today).

Reviewed By: cortinico, blakef

Differential Revision: D44099691

fbshipit-source-id: 405635dd69fd50a1e9548279eaeda3c932b5b167

Original: facebook/react-native@c5a47ab
  • Loading branch information
huntie authored and facebook-github-bot committed Mar 30, 2023
1 parent 0eb8901 commit 75e0c33
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 26 deletions.
21 changes: 8 additions & 13 deletions template/template/metro.config.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
const {getDefaultConfig} = require('@react-native/metro-config');
const {mergeConfig} = require('metro-config');

/**
* Metro configuration for React Native
* https://github.com/facebook/react-native
* Metro configuration
* https://facebook.github.io/metro/docs/configuration
*
* @format
* @type {import('metro-config').MetroConfig}
*/
const config = {};

module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: true,
},
}),
},
};
module.exports = mergeConfig(getDefaultConfig(__dirname), config);
17 changes: 4 additions & 13 deletions template/template/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,30 +18,21 @@
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.12.5",
"@react-native/eslint-config": "^0.72.1",
"@react-native/metro-config": "^0.72.0",
"@tsconfig/react-native": "^2.0.2",
"@types/metro-config": "^0.76.1",
"@types/react": "^18.0.24",
"@types/react-test-renderer": "^18.0.0",
"babel-jest": "^29.2.1",
"eslint": "^8.19.0",
"jest": "^29.2.1",
"metro-react-native-babel-preset": "0.75.1",
"metro-config": "0.76.0",
"metro-react-native-babel-preset": "0.76.0",
"prettier": "^2.4.1",
"react-test-renderer": "18.2.0",
"typescript": "4.8.4"
},
"engines": {
"node": ">=16"
},
"overrides": {
"@react-native-community/cli": "11.0.0-alpha.0",
"@react-native-community/cli-platform-android": "11.0.0-alpha.0",
"@react-native-community/cli-platform-ios": "11.0.0-alpha.0",
"@react-native-community/cli-plugin-metro": "11.0.0-alpha.0"
},
"resolutions": {
"@react-native-community/cli": "11.0.0-alpha.0",
"@react-native-community/cli-platform-android": "11.0.0-alpha.0",
"@react-native-community/cli-platform-ios": "11.0.0-alpha.0",
"@react-native-community/cli-plugin-metro": "11.0.0-alpha.0"
}
}

0 comments on commit 75e0c33

Please sign in to comment.