* Set baseUrl from jsconfig.json/tsconfig.json
* Resolve the path for loading modules
* Add tests for jsconfig.json
* Add jsconfig.json
* Update packages/react-scripts/scripts/start.js
* Move baseUrl test to config folder
* Remove alias test
* Use chalk from react-dev-utils
* Add lost absolute file for typescript baseUrl test
* Update packages/react-scripts/config/modules.js
* Update other references of useTypeScript to hasTsConfig
* Fix casing of TypeScript
* Keep respecting NODE_PATH for now to support multiple module paths.
* Add test for NODE_PATH
* Add fallback if NODE_PATH is not set.
* Fix node path behavior tests
* Remove debugging code from behavior test suite
* Remove more debugging code
* Show NODE_PATH deprecation warning during build
Co-authored-by: Ian Sutherland <ian@iansutherland.ca>
Co-authored-by: Brody McKee <mrmckeb@users.noreply.github.com>
Co-authored-by: Jack Zhao <jzhao@fb.com>
* Add postcss-normalize plugin
* Configure PostCSS Normalize
* Add documentation
* Include the doc in sidebar
* Fix the id in sidebar.json
* Update adding-css-reset.md
Co-authored-by: Jack Zhao <jzhao@fb.com>
Co-authored-by: Ian Sutherland <ian@iansutherland.ca>
* Initial pass adding typescript-eslint
* Add warning to shared rule set
* Add documentation for setting up VSCode extension
* Provide tsconfig path to typescript-eslitn
* Revert "Revert "Speed up TypeScript projects (#5903)""
This reverts commit 544a5943ce.
* Move fork-ts-checker dep to react-dev-utils
* Convert WebpackDevServerUtils.createCompiler to take in options arg
* Update README.md for react-dev-utils
* Add forward ref to SVG component
* Write proper component for the ref test
* Add ref to jest svg transform and fix tests
* Fix SVG file location
* Use proper `ref` instead of svgRef in tests
* Add ref to svgr loader
As a lot of [people](https://hackernoon.com/why-i-no-longer-use-typescript-with-react-and-why-you-shouldnt-either-e744d27452b4) is complaining about TypeScript performance in CRA, I decided to enable `async` mode in TypeScript checker.
These changes basically brings the JS compilation times to TS projects. So, recompilation took less than 1 second instead of 3 seconds in medium size project.
The problem with async mode is that type-errors are reported after Webpack ends up recompilation as TypeScript could be slower than Babel. PR allows to emit files compiled by Babel immediately and then wait for TS and show type errors in terminal later. Also, if there was no compilation errors and any type error occurs, we trigger a hot-reload with new errors to show error overlay in browser.
Also, I wanted to start a discussion about `skipLibCheck: false` option in default `tsconfig.json`. This makes recompilations really slow and we should consider to set it to `true` or at least give users a big warning to let them know that it could be really slow.
The following video is showing the updated workflow with a forced 2.5 second delay for type-check to give you an idea how it works.

I'm pretty sure that PR needs some polishing and improvements but it should works as it is. Especially a "hack" with reloading the browser after type-check looks ugly to me.
cc @brunolemos as he is an initiator of an original TypeScript PR.
Should fix https://github.com/facebook/create-react-app/issues/5820
Switches to eval-source-map, which is easier for webpack to recompute
when a file changes and has column based mappings, which lets firefox
devtools show original variable in the debugger and evaluate original
expressions in the console.
* Rename production configuration
* Upgrade lint staged
* Merge mode, bail, devtool, and entry
* Merge output settings
* Remove old comment
* Merge some trivial differences
* Disable minimize in development mode
* Only minify html and generate SW in production
* Adjust comment
* Toggle development plugins
* Add missing imports
* Scope settings
* Delete development config
* Use new config file
* Remove unnecessary config import
* Remove react-scripts type reference on eject
* Check for env file
* Check eject for typescript
* Shuffle appTypeDeclarations
* Append internal types on eject
* Ensure lib is published for types
* Adjust comment
* Don't add a bunch of new lines
* File should exist and not be deleted
* Add debug
* Set file explicitly
* Revert "Set file explicitly"
This reverts commit bcd58a36cbd08a71af50b037d8f1fae6c595fb4e.
* Copy file before destroying ourselves
* Revert "Add debug"
This reverts commit 0068ba81c6d79d99788877c9e1b618acd7412dce.
* Specify types in package
* Do not remove types file on eject
* Stop copying types into generated project
* Reference react and react-dom
* Reference node types
* Install node types as well
* Restore copying
* Add Node to the list of installed types
* Reference Jest types
* Remove jest types from install
* Remove jest from CRA install
* Remove Jest reference and let user do this themselves
* Stop copying types file
* Add types key to package.json
* Add appTypeDeclarations and create when missing
* Rename declarations file
* Add Jest back to install instructions
* Minimize diff
* Don't resolve TS files if it's not detected in the project
* Automatically create tsconfig.json file for user
* Remove always false check
* Add missing file
* Don't filter paths too early
* Add environment variable to optionaly disable inlining of chunks
* Changed env var to `process.env.INLINE_RUNTIME_CHUNK `
* Added env var to Advanced Configuration in docs
* Drop implied behavior
* Tweak working to match other descriptions