mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Adds a new `fixtures` crate intended for running end-to-end tests of the compiler. As we expand the compiler this will eventually match our JS fixture setup, where we have .js files as input and produce memoized JS output. For now, this does the following: * Parses with SWC (omg this was painful to setup) * Runs SWC's name resolution, which annotates the SWC ast in-place * Convert the SWC ast into our `estree` representation * Convert `estree` into `hir` for each top-level function declaration in the input program * Print the Rust `Debug` view of the resulting HIR As a next step i'll add a pretty-printer for the HIR to roughly match what we have in JS.
test262
@ 83a46bfe0e
React Forget
React Forget is an experimental Babel plugin to automatically memoize React Hooks and Components.
Development
# tsc --watch
$ yarn dev
# in another terminal window
$ yarn test --watch
Notes
An overview of the implementation can be found in the Architecture Overview.
This transform
- needs plugin-syntax-jsx as a dependency to inherit the syntax from.
- should be run before plugin-transform-react-jsx
- assume the enforcement of rules of hooks, i.e.
- only call hooks from React functions
- only call hooks at the top level
- https://www.npmjs.com/package/eslint-plugin-react-hooks
Scaffolding
- https://github.com/facebook/flow/tree/master/packages/babel-plugin-transform-flow-enums
- https://github.com/babel/babel/blob/main/packages/babel-plugin-transform-react-jsx/src/create-plugin.ts
Reference