mirror of
https://github.com/zebrajr/react.git
synced 2025-12-07 12:20:38 +01:00
* Use relative paths in packages/react * Use relative paths in packages/react-art * Use relative paths in packages/react-cs * Use relative paths in other packages * Fix as many issues as I can This uncovered an interesting problem where ./b from package/src/a would resolve to a different instantiation of package/src/b in Jest. Either this is a showstopper or we can solve it by completely fobbidding remaining /src/. * Fix all tests It seems we can't use relative requires in tests anymore. Otherwise Jest becomes confused between real file and symlink. https://github.com/facebook/jest/issues/3830 This seems bad... Except that we already *don't* want people to create tests that import individual source files. All existing cases of us doing so are actually TODOs waiting to be fixed. So perhaps this requirement isn't too bad because it makes bad code looks bad. Of course, if we go with this, we'll have to lint against relative requires in tests. It also makes moving things more painful. * Prettier * Remove @providesModule * Fix remaining Haste imports I missed earlier * Fix up paths to reflect new flat structure * Fix Flow * Fix CJS and UMD builds * Fix FB bundles * Fix RN bundles * Prettier * Fix lint * Fix warning printing and error codes * Fix buggy return * Fix lint and Flow * Use Yarn on CI * Unbreak Jest * Fix lint * Fix aliased originals getting included in DEV Shouldn't affect correctness (they were ignored) but fixes DEV size regression. * Record sizes * Fix weird version in package.json * Tweak bundle labels * Get rid of output option by introducing react-dom/server.node * Reconciler should depend on prop-types * Update sizes last time |
||
|---|---|---|
| .. | ||
| __tests__ | ||
| codes.json | ||
| extract-errors.js | ||
| invertObject.js | ||
| README.md | ||
| replace-invariant-error-codes.js | ||
| Types.js | ||
The error code system substitutes React's invariant error messages with error IDs to provide a better debugging support in production. Check out the blog post here.
Note for cutting a new React release
- For each release, we run
yarn build -- --extract-errorsto update the error codes before callingyarn build. The build step usescodes.jsonfor a production (minified) build; there should be no warning likeError message "foo" cannot be foundfor a successful release. - The updated
codes.jsonfile should be synced back to the master branch. The error decoder page in our documentation site usescodes.jsonfrom master; if the json file has been updated, the docs site should also be rebuilt (rake copy_error_codesis included in the defaultrake releasetask). - Be certain to run
yarn build -- --extract-errorsdirectly in the release branch (if not master) to ensure the correct error codes are generated. These error messages might be changed/removed before cutting a new release, and we don't want to add intermediate/temporary error messages tocodes.json. However, if a PR changes an existing error message and there's a specific production test (which is rare), it's ok to updatecodes.jsonfor that. Please useyarn build -- --extract-errorsand don't edit the file manually.
Structure
The error code system consists of 5 parts:
codes.jsoncontains the mapping from IDs to error messages. This file is generated by the Gulp plugin and is used by both the Babel plugin and the error decoder page in our documentation. This file is append-only, which means an existing code in the file will never be changed/removed.extract-errors.jsis an node script that traverses our codebase and updatescodes.json. Use it by callingyarn build -- --extract-errors.replace-invariant-error-codes.jsis a Babel pass that rewrites error messages to IDs for a production (minified) build.reactProdInvariant.jsis the replacement forinvariantin production. This file gets imported by the Babel plugin and should not be used manually.ErrorDecoderComponentis a React component that lives at https://reactjs.org/docs/error-decoder.html. This page takes parameters like?invariant=109&args[]=Fooand displays a corresponding error message. Our documentation site'sRakefilehas a task (bundle exec rake copy_error_codes) for adding the latestcodes.jsonto the error decoder page. This task is included in the defaultbundle exec rake releasetask.