react/scripts/error-codes
Dan Abramov aeda7b745d
Remove fbjs dependency (#13069)
* Inline fbjs/lib/invariant

* Inline fbjs/lib/warning

* Remove remaining usage of fbjs in packages/*.js

* Fix lint

* Remove fbjs from dependencies

* Protect against accidental fbjs imports

* Fix broken test mocks

* Allow transitive deps on fbjs/ for UMD bundles

* Remove fbjs from release script
2018-06-19 16:03:45 +01:00
..
__tests__ Remove fbjs dependency (#13069) 2018-06-19 16:03:45 +01:00
README.md [Gatsby] "https://facebook.github.io/react/" -> "https://reactjs.org/" (#10970) 2017-09-29 18:43:22 -07:00
Types.js Update license headers BSD+Patents -> MIT 2017-09-25 18:17:44 -07:00
codes.json Update error codes for 16.4.1 release 2018-06-13 17:20:35 +01:00
extract-errors.js refactor: scripts/error-codes (#11697) 2017-11-29 01:13:12 +00:00
invertObject.js Disable for...of by default, rewrite cases where it matters (#12198) 2018-02-09 16:11:22 +00:00
replace-invariant-error-codes.js facebook.github.io/react -> reactjs.org (#12545) 2018-04-04 21:20:41 +01:00

README.md

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

  1. For each release, we run yarn build -- --extract-errors to update the error codes before calling yarn build. The build step uses codes.json for a production (minified) build; there should be no warning like Error message "foo" cannot be found for a successful release.
  2. The updated codes.json file should be synced back to the master branch. The error decoder page in our documentation site uses codes.json from master; if the json file has been updated, the docs site should also be rebuilt (rake copy_error_codes is included in the default rake release task).
  3. Be certain to run yarn build -- --extract-errors directly 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 to codes.json. However, if a PR changes an existing error message and there's a specific production test (which is rare), it's ok to update codes.json for that. Please use yarn build -- --extract-errors and don't edit the file manually.

Structure

The error code system consists of 5 parts:

  • codes.json contains 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.js is an node script that traverses our codebase and updates codes.json. Use it by calling yarn build -- --extract-errors.
  • replace-invariant-error-codes.js is a Babel pass that rewrites error messages to IDs for a production (minified) build.
  • reactProdInvariant.js is the replacement for invariant in production. This file gets imported by the Babel plugin and should not be used manually.
  • ErrorDecoderComponent is a React component that lives at https://reactjs.org/docs/error-decoder.html. This page takes parameters like ?invariant=109&args[]=Foo and displays a corresponding error message. Our documentation site's Rakefile has a task (bundle exec rake copy_error_codes) for adding the latest codes.json to the error decoder page. This task is included in the default bundle exec rake release task.