Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeScript: Slow compilation time #5820

Closed
td0m opened this issue Nov 15, 2018 · 10 comments
Closed

TypeScript: Slow compilation time #5820

td0m opened this issue Nov 15, 2018 · 10 comments

Comments

@td0m
Copy link

@td0m td0m commented Nov 15, 2018

Now that create-react-app now natively supports typescript, I gave it a try. I expected near instant compilation times after making a change to a file, just like with JavaScript. Instead, I got about 3-5s of delay on the official typescript cra (out of the box). I thought this delay would disappear after moving to babel 7, I thought we simply strip off TypeScript when running the dev server and properly compile TypeScript and check for errors when building the production build? Is this possible?

@Timer Timer added this to the 3.0 milestone Nov 17, 2018
@td0m
Copy link
Author

@td0m td0m commented Nov 17, 2018

As we are already using babel 7, it's not the babel-loader that is slowing down the build times. In the react-scripts webpack config, if you delete the ForkTsCheckerWebpackPlugin, the build times drastically drop meaning that this is what causes our slow build times.

I'm sure many users would prefer near instant re-compilation times and have the option to disable ForkTsCheckerWebpackPlugin, as they already have great linting & type checking in their editor, such as in VsCode, and optionally support checking types with e.g npm run check-types which would simply run tsc and display any type errors. This conventions has been well shown in this article about typescript with babel 7. Currently the only way of doing this, is running npm run eject, can we add some option to enable/disable the type checker? Thank you 👍🏻.

@ianschmitz
Copy link
Collaborator

@ianschmitz ianschmitz commented Nov 17, 2018

Enabling async on ForkTsCheckerWebpackPlugin usually drastically improves the re-compilation times in my experience.

You can see our previous discussions on this during the original TypeScript PR a while back, where we had issues enabling async in CRA over at #4837, and it wasn't feasible to include at the time. I think we would all love to see this enabled, but we would have to solve the issues mentioned in that thread.

Some notable comments:
#4837 (comment)
#4837 (comment)

@td0m
Copy link
Author

@td0m td0m commented Nov 17, 2018

@ianschmitz Changing the ForkTsCheckerWebpackPlugin config async to true and silent to false seems to fix both the issues you stated above. Errors are perfectly displayed.
5820 1.

Obviously, because async is enabled and the ts checking takes more than the babel process, the errors are displayed with a delay.

@Bnaya
Copy link

@Bnaya Bnaya commented Nov 18, 2018

IMO disabling type checking by default, or adding ability to opt out, makes a-lot of sense

@deftomat
Copy link
Contributor

@deftomat deftomat commented Nov 26, 2018

Slow TS recompilation is a big pain in CRA projects. I'm hoping that this could help #5903

@hlthi
Copy link

@hlthi hlthi commented Dec 10, 2018

#5959

Rebuild Time( skipLibCheck: false) : 5.20
Current Rebuild Time(skipLibCheck: true) : 0.4 seconds
Ratio : 13

@ianschmitz ianschmitz modified the milestones: 3.0, 2.1.x Dec 11, 2018
@shavyg2
Copy link

@shavyg2 shavyg2 commented Dec 14, 2018

how are people working around this issue? I normally do everything i can to avoid ejecting but this is unbearable?

@hlthi
Copy link

@hlthi hlthi commented Dec 14, 2018

how are people working around this issue? I normally do everything i can to avoid ejecting but this is unbearable?

Just change tsconfig.json , "skipLibCheck" : true

@insidewhy
Copy link

@insidewhy insidewhy commented Jan 15, 2019

@hlthi skipLibCheck improves the situation somewhat but it's still not adequate IMO. It's a shame that async is disabled just due to the terminal clearing. I specifically disable the screen clearing (via CI=true) as I find it irritating. Now it's doubly irritating haha ;)

@insidewhy
Copy link

@insidewhy insidewhy commented Jan 15, 2019

Created a PR with a fix: #6209
With this change you can simply use CI environment variable to have your type checker run asynchronously, at the cost of create-react-app not clearing your terminal.

ianschmitz added a commit that referenced this issue Feb 8, 2019
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.

![nov-26-2018 15-47-01](https://user-images.githubusercontent.com/5549148/49021284-9446fe80-f192-11e8-952b-8f83d77d5fbc.gif)


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 #5820
mrmckeb pushed a commit to BeameryHQ/bmr-react-scripts that referenced this issue Feb 11, 2019
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.

![nov-26-2018 15-47-01](https://user-images.githubusercontent.com/5549148/49021284-9446fe80-f192-11e8-952b-8f83d77d5fbc.gif)


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 facebook#5820
@lock lock bot locked and limited conversation to collaborators Feb 13, 2019
Pong420 pushed a commit to Pong420/create-react-app that referenced this issue Feb 24, 2019
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.

![nov-26-2018 15-47-01](https://user-images.githubusercontent.com/5549148/49021284-9446fe80-f192-11e8-952b-8f83d77d5fbc.gif)


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 facebook#5820
stromsky added a commit to stromsky/create-react-app that referenced this issue Mar 2, 2019
* Make the navigation easier to read on small devices

* Add section about how to get started

* Add section about updating

* Add a few more features to the bottom

* Fix indentation mess

* Add missing period

* Remove punctuation for consistency

* Make `Getting Started` consistent

* Order docs in footer

Rename to match page "About The Docs"

These seem redundant, consider just "Getting Started"? Add more links?

* Edits to Getting Started 

- Copy edits for consistency
- Remove <br>'s for readability

Should all headers be Title Case? I see `Creating an App` but `Installing A Dependency`. I tend to use https://titlecaseconverter.com/, thoughts?

* Fix eslint config docs. (facebook#5416)

Update peer dependency versions in README.

* Add the new SVGs feature from the template README to the root README (facebook#5374)

* Updates to clarify the "waiting" SW behavior (facebook#5410)

* use the correct dependency for babel-plugin-dynamic-import-node (facebook#4984)

* use the correct dependency for babel-plugin-dynamic-import-node

* Update package.json

* Fix click-to-open on Windows (facebook#5431)

* Fix click-to-open on Windows

* Oops

* Correct instructions for HTTPS and PowerShell (facebook#5394)

Current instructions for running using HTTPS in a PowerShell prompt are incorrect and do not work on Windows 10 v1809

* Added note on update to .flowconfig for .scss imports (facebook#5321)

* Added note on update to .flowconfig for .scss imports

Added a note aimed at Flow users on how to get Flow to recognize the .scss imports.

* Mentioned .sass extension in note, added backticks

* Downgrade lerna-changelog because it has a bug

* Update cached lockfile

* Changelog for 2.0.5

* Publish

 - babel-preset-react-app@5.0.4
 - confusing-browser-globals@1.0.4
 - create-react-app@2.0.4
 - eslint-config-react-app@3.0.4
 - react-dev-utils@6.0.5
 - react-error-overlay@5.0.5
 - react-scripts@2.0.5

* Remove dot from the end of the link (facebook#5449)

* Fix typo

explictly seems like a typo for explicitly

* New copy, by me

* Port documentation updates

* doc tweaks

* fix url

* Point README to docs

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Fixed typo in getting-started (facebook#5493)

changed amy to any

* Fix typo (facebook#5494)

* Remove --dev flag

* TypeScript syntax support (facebook#4837)

* Fix title on Safari (facebook#5499)

* Update doc links in template README (facebook#5512)

* Update required version in README

* Add "edit" feature to Docusaurus pages (facebook#5492)

* Always type check TypeScript when being used (facebook#5515)

* Always type check TypeScript when being used

* Use alternate version

* Check for TypeScript install in preflight (facebook#5516)

* Check for TypeScript install in preflight

* Remove unused import

* Validate tsconfig when using TypeScript (facebook#5524)

* Sanity check TypeScript config

* Check more options

* Set all defaults and suggestions

* Update docs

* Update doc notes

* Automatically copy react app declared types to project on start

* Remove note about loaders.d.ts

* Automatically create a `tsconfig.json` when entrypoint is TypeScript

* Hoist compiler options

* Print friendly message on first time use

* Fix TypeScript file detection

* Properly exclude test files from typechecking

* Add an advanced typescript test case

* Update Workbox dependency (facebook#5527)

* Add TypeScript error formatting (facebook#5529)

* Update adding-typescript.md

* Enable TypeScript json module resolver (facebook#5531)

* Enable TypeScript json module resolver

* Update verifyTypeScriptSetup.js

* Use TypeScript parser to read tsconfig.json (facebook#5532)

* Simplified TypeScript steps (facebook#5533)

* Respect tsconfig.json extends when validating config (facebook#5537)

* Use TS to resolve tsconfig extends

* Prevent modifications to original tsconfig

* Print friendly error

* Avoid pushing .pnp folder to git (facebook#5469)

* Add .pnp folder ro gitignore file

Avoid pushing .pnp folder to git

* Add .pnp.js to ignore list

* Remove service worker types from the main install

* Automatically setup TypeScript when detected (facebook#5549)

* 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 Algolia search bar to Docusaurus (facebook#5551)

* Simplify TypeScript setup instructions

* Adjust notes

* Change import syntax from typescript declaration (facebook#5559)

* Add typings for process.env (facebook#5557)

* Add TypeScript app creation (facebook#5550)

* Add TypeScript app creation

* Actually specify new extension

* Check for ts and tsx

* Fix types in default service worker file

* Mirror changes in JS version of SW

* Separate templates

* Use separate template directory

* Remove unused function

* Add a tsconfig file to the template

* Test install of typescript

* Add e2e for TypeScript

* Check for index.tsx to make sure we're not in the JS template

* Ensure TypeScript doesn't leak into normal installs

* Ignore some files

* Print version of CRA

* Fix script

* Add new template

* Move test to correct location

* Use `verifyTypeScriptSetup` routine to populate files

* Ensure tsconfig is created

* Don't auto exclude test files

* Enable forceConsistentCasingInFileNames by default

* Fix tests

* Fix tests x2

* Remove publish time waste

* Always publish with npm

* Add instructions for a prerelease

* Prompt for 2fa auth code

* Update lockfile

* Check for CI in publish

* Update App.tsx (facebook#5588)

* Fixing the code splitting links in the ESLint output (facebook#5586)

* Fix process.env types (facebook#5589)

Fix facebook#5576

* Refine how TypeScript env types are handled (facebook#5593)

* 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

* Turn on certain TypeScript options (facebook#5607)

* Ignore test files from reported type errors (facebook#5608)

* Ignore test files from reported type errors

* Ignore setup proxy & test files

* Remove unsupported TS options (facebook#5609)

* Compile lock file on publish

* Ignore json files from TypeScript type checking (facebook#5614)

Fix facebook#5613

* Fixing Internal Links (facebook#5552)

* Fixing Internal Links

Internal links, like those found on [Available Scripts](https://facebook.github.io/create-react-app/docs/available-scripts)
use absolute urls and therefore link to https://facebook.github.io/docs/deployment instead of
https://facebook.github.io/create-react-app/docs/deployment.

* changing to markdown links and fixing various broken internal links

* Remove react-scripts type reference on eject (facebook#5611)

* 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 bcd58a3.

* Copy file before destroying ourselves

* Revert "Add debug"

This reverts commit 0068ba8.

* Update lockfile

* Add release documentation

* Update lockfile

* Publish

 - babel-preset-react-app@6.0.0
 - confusing-browser-globals@1.0.5
 - create-react-app@2.1.0
 - eslint-config-react-app@3.0.5
 - react-dev-utils@6.1.0
 - react-error-overlay@5.0.6
 - react-scripts@2.1.0

* Add note about react-scripts version

* Update docs url

* Add link to cra-ts migration guide (facebook#5629)

For users coming from create-react-app-typescript, the added link provides instructions on how to port their app to Create React App.

* Update minimum node version to 8.10 in README (facebook#5635)

* fix: Duplicate string index signature in ProcessEnv (facebook#5621)

* Make serviceWorker config argument optional in template (facebook#5651)

* add tests for named-asset-imports plugin (facebook#5575)

* add tests for named-asset-imports plugin

* add ticketFormats store/saga

* change import to require on test file to avoid using babel when running tests

* remove all babel dependencies as not needed more for running tests

* update tests and rename file to index.test.js

* remove npmignore as it is whitelisted in package.json

* add babel-plugin-named-asset-import tests to e2e

* Update making-a-progressive-web-app.md (facebook#5658)

* Add support for decorators (facebook#5659)

* Turn on decorators

* Add decorator test

* Expose `reportRuntimeError` (facebook#4709)

* factor out crashWithFrames and expose reportRuntimeError

* address code review and move error call to handleRuntimeError

* Add changelog for 2.1.1

* Update cached lock file

* Publish

 - babel-plugin-named-asset-import@0.2.3
 - babel-preset-react-app@6.1.0
 - create-react-app@2.1.1
 - react-dev-utils@6.1.1
 - react-error-overlay@5.1.0
 - react-scripts@2.1.1

* Add bot config (facebook#4483)

* Add stale config

* Update stale config

* Add lock config

* Update lock.yml

* update envinfo to 5.11.1 (facebook#5685)

* ignore intellij module files when generating an app (facebook#4605)

* Make stale bot configuration more aggressive

* Lock issues more aggressively

* Add permissive TS lib defaults (facebook#5694)

* Fix tsconfig.json lib suggested value (facebook#5701)

* Fix broken documentation link (facebook#5670)

Fix public folder documentation link

* Fixed link to manifest.json file (facebook#5704)

* Updated the link to firebase hosting (facebook#5710)

* Version bump postcss-preset-env to latest (facebook#5721)

* Fix typo (facebook#5727)

* Update stale.yml

* Tweak bot settings

* Merge webpack configuration (facebook#5722)

* 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

* Suggest Encore when not building a SPA with Symfony (facebook#5730)

* Suggest Encore when not building a SPA with Symfony

* Update README.md

* Add PR welcoming badge  (facebook#5759)

* add pr badge 🎉

* add rounded badge 💥

* Update README.md

* docs: Change Storybook install documentation (facebook#5779)

* Don't polyfill fetch for Node -- additional files (facebook#5789)

* docs: Simplify installing Storybook with npx (facebook#5788)

Reduce two-step install to just one step (per the latest storybook docs)

Change (i) `npm install -g @storybook/cli` and (ii) `sb init` to `npx -p @storybook/cli sb init`

Refs: https://storybook.js.org/basics/quick-start-guide/

* Rename 'getting started' link to 'docs' (facebook#5806)

* extra polyfills must be included manually (facebook#5814)

* extra polyfills must be included manually, fixes facebook#5795

* make note italicized

* React native repository updated in README.md (facebook#5849)

Create React Native App (https://github.com/react-community/create-react-native-app ) has been archived by the owner. It is now read-only.

* Make named-asset-import plugin work with export-as syntax (facebook#5573)

* update named-asset-import babel plugin

* add tests to named-asset-import plugin

* add more plugin test

* extract generateNewSource method, renaming variables

* extract replaceNotVisitedSpecifiers for export and import visitors

* remove visited list update from importDeclaration

* renaming methods and removing return directly instead of saving

* Add allowESModules option to babel-preset-react-app (facebook#5487)

* Add allowESModules option to babel-preset-react-app

* changes after feedback

* Apply suggestions from code review

Co-Authored-By: Pajn <rasmus@eneman.eu>

* fix: add `sideEffects: false` to react-error-overlay (facebook#5451)

This allows us to leave the import in the code, and webpack will still tree shake it out

* Fix TypeScript decorator support (facebook#5783)

* Fix TypeScript decorator support

* Update babel flow override

* WIP

* Fix annotated var test

* Upgrade babel deps

* Fix propertyDecorator test

* Always test with the latest stable Node version on Travis (facebook#5546)

* fix: make typescriptformatter support 0.5 of fork checker (facebook#5879)

* Fix link to page about running tests (facebook#5883)

* Some Grammar fixes (facebook#5858)

* Grammar fixes

1- For `Here's a `: The singular verb form ’s does not seem to agree with the plural subject a few common cases where you might want to try something else. Consider changing the verb form.

2- Added `A` before Reasonably : The noun phrase Reasonably good configuration seems to be missing a determiner before it. Consider adding an article. An article (a, an, or the) is a type of determiner. Possessive adjectives (my, his, our), possessive nouns (Joe’s, mother’s), and quantifiers (each, every) are also determiners. Single countable nouns usually require a determiner.

* Update README.md

* Run prettier on HTML files (facebook#5839)

* Remove unnecessary whitespace in template HTML

* Support setupTests.ts (facebook#5698)

* Disable copy to clipboard in cra --info (facebook#5905)

* Disable copy to clipboard in cra --info

Fixes an issue where npx create-react-app --info throws an exception on Windows. The exception was caused by envinfo's copy to clipboard functionality; envinfo is distributed pre-bundled, but the dependency it uses for copying to the clipboard makes use of a binary on Windows that can't be found once the bundle is made. Disabling copy to clipboard fixes the issue. Closes facebook#5757.

* Explicitly set clipboard to false

* Add placeholders to template README for bit.ly links. (facebook#5808)

* Add placeholders to template README for bit.ly links.

* Add placeholders to template README for goo.gl links.

* Update PWA link in README (facebook#5907)

* Add note to docs about using Sass and Flow together (facebook#5823)

* Add default values to `file_ext` note

* Update note to include a link to the relevant docs

* Update copy to indicate the default values

* Add missing space

* Correct some comments (facebook#5927)

And remove some outdated info from 1.x

* Add netlify.toml to prepare for deploy to netlify facebook#5807 (facebook#5930)

* commit toml

* full build path

* wow the path is long

* redirect

* Add pre-eject message about new features in v2 (facebook#5954)

* Add pre-eject message about new features in v2

* Make message bold

* Suggest a different default for speed reasons (facebook#5959)

Advanced users can opt into this behavior, but it's generally outside the users' control to fix and comes with performance concerns

* Add SASS_PATH instructions to Sass docs (facebook#5917)

`node-sass` supports the SASS_PATH variable that we can use. This PR adds that to the documentation.

* Add removeItem to localStorage mock in docs (facebook#5919)

* Improve error messaging in verifyPackageTree.js (facebook#5974)

* Use https for linked images in docs to fix mixed content warnings (facebook#5985)

* Update links to docs in all package README files (facebook#5912)

* Update links to docs in all package README files

* Fix formatting of issue template

* Fix formatting of issue template

* Added extension to .eslintrc (facebook#5988)

* Update eslint instructions in docs (facebook#5990)

* Add production build section to docs (facebook#5900)

* Make links to docs consistent in README (facebook#6000)

* Add docs for creating new TypeScript project (facebook#6015)

* add webp support for typescript (facebook#5978)

* add webp support for typescript

* moved webp declaration below png

* Fix Markdown comment in proxying docs (facebook#6009)

* Tweak contributing doc

* Prepare 2.1.2 release

* Publish

 - babel-plugin-named-asset-import@0.3.0
 - babel-preset-react-app@7.0.0
 - create-react-app@2.1.2
 - eslint-config-react-app@3.0.6
 - react-app-polyfill@0.2.0
 - react-dev-utils@7.0.0
 - react-error-overlay@5.1.1
 - react-scripts@2.1.2

* Add note to changelog

* Fix control comment fo CSS Grid prefixing (facebook#6061)

"on" value of "autoprefixer grid" is kinda deprecated. It's better to use "autoplace" or "no-autoplace" instead.
https://github.com/postcss/autoprefixer#options

"autoplace" enables PostCss' autoplace polyfill for ie and makes prefixes, "no-autoplace" only makes prefixes
https://github.com/postcss/autoprefixer#does-autoprefixer-polyfill-grid-layout-for-ie

* Update eslint instructions in docs (facebook#6084)

Add a note that it will work in IDE with 2.0.3 and later

* Generalize the Bootstrap documentation (facebook#5631)

* Generalize the adding bootstrap documentation

* Update adding-bootstrap.md

* Update adding-bootstrap.md

* Update adding-bootstrap.md

* Update lock bot config

* Typo fixes (facebook#6104)

<!--
Thank you for sending the PR!

If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots!

Happy contributing!
-->

* Fix comment typo (facebook#6036)

* Replace deprecated VSCode launch.json variable (facebook#6110)

Replace deprecated ${workspaceRoot} variable with ${workspaceFolder} in VSCode launch.json. See https://code.visualstudio.com/docs/editor/variables-reference#_why-isnt-workspaceroot-documented

* Update webpack-dev-server 3.1.9 -> 3.1.14 (facebook#6064)

* Update webpack-dev-server 3.1.9 -> 3.1.14

* Update adding-typescript.md

* Fix typo in CSS modules docs (facebook#6067)

* Prepare 2.1.3 release

* Publish

 - create-react-app@2.1.3
 - react-dev-utils@7.0.1
 - react-error-overlay@5.1.2
 - react-scripts@2.1.3

* Update CHANGELOG.md

* Fix CI and upgrade dependencies (facebook#6137)

* Upgrade a bunch of dependencies

* Turn off nightly Yarn

* Bump eslint-plugin-react version and update webpack config (facebook#6132)

* Bump eslint-plugin-react version

* Move eslint-plugin-react settings into eslint-config-react-app

* Add react/no-typos rule

* Switch to eval-source-map (facebook#5060)

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.

* Remove extra table cell (facebook#6141)

* update link for difference between proposal stages (facebook#6149)

seems the page which the old link points to has removed the related information.

* Update react-dev-util globby dependency to v8.0.2 (facebook#6162)

v8.0.2 was recently released https://github.com/sindresorhus/globby/releases to fix some pathing issues with dir-glob.

* Add note for global install of CLI (facebook#6157)

* Add note for global install of CLI

Closes facebook#6140.

* Add react/react-dom dependencies to relative-paths test fixture (facebook#6165)

* Update local-test.sh to return test exit code (facebook#6179)

The `e2e:docker` command can run tests in a Docker container, but it always returns exit code 0 even if the tests failed. This PR resolves that and returns the exit code from the test command.

* Upgrade @svgr/webpack to 4.1.0 (facebook#5816)

* Upgrade svgr to 4.0.3

* Upgrade svgr to 4.0.4

* Remove unnecessary prettier option

* Update to 4.1.0

* Move chalk dependency to react-dev-utils (facebook#6150)

Related to facebook#751

* Ignore node_modules in verifyNoTypeScript (facebook#6022)

* Add empty mock for module (facebook#5798)

* Changes to steps for publishing GitHub User Page (facebook#6095)

* Changes to steps for publishing GitHub User Page

Remove the the step for switching to gh-pages branch as it is no longer a viable option.

* Changed projects to project

* Update updating-to-new-releases.md with note about global installs (facebook#6190)

* Update updating-to-new-releases.md

Related to facebook#6140

* Update updating-to-new-releases.md

Linking to getting started following discussion on facebook#6190. 
Adapt terminology to current installation methods.

* Update updating-to-new-releases.md

typo, rleative link

* Update docusaurus/docs/updating-to-new-releases.md

Co-Authored-By: carpben <carpben@users.noreply.github.com>

* Update `serve` change listening port documentation (facebook#6229)

* [docs] Change serve port flag and add example

* [docs] Add --listen flag

* Fix e2e:docker test failure (facebook#6050)

* fix e2e:docker issue

* fix e2e tests

* Update stale config to ignore additional labels

* Prevent cursor events on app-logo svg (facebook#6276)

* Add '--no-watch' flag for tests (facebook#6285)

* Check for multiple project names when initializing (facebook#6080)

* Add `--no-watch` test flag to docs (facebook#6331)

* Add empty mock for dns (facebook#6292)

* Fix order of args in tasks/cra test (facebook#6342)

* Fix missing article in README (facebook#6346)

* Make manifest.json description more generic (facebook#6355)

* Speed up TypeScript projects (facebook#5903)

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.

![nov-26-2018 15-47-01](https://user-images.githubusercontent.com/5549148/49021284-9446fe80-f192-11e8-952b-8f83d77d5fbc.gif)


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 facebook#5820

* Update ZEIT Now deployment instructions (facebook#6359)

* Sass source map for dev (facebook#5713)

Sass source map for dev

* Upgrade Docusaurus and enable new features

* Use semicolons in the ProcessEnv interface (facebook#6364)

* Update babel-plugin-macros 2.4.4 -> 2.4.5 (facebook#6307)

As part of the latest babel-plugin-macros [2.4.5 release](https://github.com/kentcdodds/babel-plugin-macros/releases/tag/v2.4.5), there was a small fix that went in that fixes a [bug](kentcdodds/babel-plugin-macros#100) specifying the `babelMacros` entry in `package.json` no longer working. This patch version increase should remedy the issue and allow specifying babel macro configuration in the `package.json` file again (as stated in the [user docs](https://github.com/kentcdodds/babel-plugin-macros/blob/master/other/docs/user.md#config-experimental) of babel-plugin-macros)

* [docs] Warn/clarify that env vars are NOT "SECRET" (facebook#6062)

* [docs] Warn about storing secrets in env vars

Fixes facebook#5676

Co-Authored-By: Ian Schmitz <ianschmitz@gmail.com>

* [docs] Add NOT to REACT_APP_SECRET_CODE

Fixes facebook#5676

* [docs] Remove line breaks

* Add Jest typeahead plugin (facebook#5213)

* Add Jest typeahead plugin

* Update jest-watch-typeahead to 0.2.1

* Update docs links to prefer HTTPS for supported domains (facebook#6383)

* Update docs links to prefer HTTPS for supported domains

* Fix existing typos

* Revert "Check for multiple project names when initializing (facebook#6080)"

This reverts commit a78be99.

* Upgrade dependencies (facebook#6393)

* Prepare 2.1.4 release

* Publish

 - babel-plugin-named-asset-import@0.3.1
 - babel-preset-react-app@7.0.1
 - create-react-app@2.1.4
 - eslint-config-react-app@3.0.7
 - react-app-polyfill@0.2.1
 - react-dev-utils@7.0.2
 - react-error-overlay@5.1.3
 - react-scripts@2.1.4

* Move fork-ts-checker-webpack-plugin dependency to react-dev-utils (facebook#6395)

* Revert "Move fork-ts-checker-webpack-plugin dependency to react-dev-utils (facebook#6395)"

This reverts commit c2b7158.

* Revert "Speed up TypeScript projects (facebook#5903)"

This reverts commit 5ce09db.

* Prepare 2.1.5 release

* Publish

 - create-react-app@2.1.5
 - react-dev-utils@7.0.3
 - react-scripts@2.1.5

* Add information for usage custom registries on e2e testing facebook#4488 (facebook#5767)

* Update stale.yml

* Add forward ref to SVG Component (facebook#5457)

* 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

* Update the docs to match facebook#5846

* Exclude `.d.ts` files from TypeScript glob

* Revert "Switch to eval-source-map (facebook#5060)" (facebook#6444)

This reverts commit 773d103.

* Only use `yarn.lock.cached` if using the default Yarn registry (facebook#6253)

* Fix typo in doc (facebook#6454)

"Collocation" insead of "Colocation".

* Speed up TypeScript v2 (facebook#6406)

* Revert "Revert "Speed up TypeScript projects (facebook#5903)""

This reverts commit 544a594.

* 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 CODEOWNERS

* Convert all bit.ly links from http to https (facebook#6239)

* revert css sourcemaps in development (facebook#6472)

This fixes facebook#6399.

* Remove latest Node version from Travis config (facebook#6474)

* Use contenthash instead of chunkhash for better long-term caching (facebook#6387)

* Fix a typo

* Analyse also dependencies bundle (facebook#6438)

The current `analyze` script only analises the `/src` code. This change leverages new version of `source-map-explorer` that is able to analyse multiple bundles at once, including the  3rd party dependencies bundle which is in my opinion even more important to analyze.

* minor typo fix in openBrowser

* Improved language used in markdown code blocks. (facebook#6419)

* Improved language used in code blocks.

* removed redundant statements (facebook#6254)

The enabled by default statement made sense when the developer was supposed to disable flow in order to use ts. Both those statements in there create some confusion about it in my opinion.

* Remove AppVeyor config files (facebook#6493)

* Fix build deployment instruction link appends comma at end (facebook#6511)
Kiku-Reise added a commit to Kiku-Reise/create-react-app that referenced this issue Mar 7, 2019
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.

![nov-26-2018 15-47-01](https://user-images.githubusercontent.com/5549148/49021284-9446fe80-f192-11e8-952b-8f83d77d5fbc.gif)


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 facebook#5820
fezhengjin added a commit to xsky-fe/create-react-app-wizard that referenced this issue May 14, 2019
* Updated the link to firebase hosting (facebook#5710)

* Version bump postcss-preset-env to latest (facebook#5721)

* Fix typo (facebook#5727)

* Update stale.yml

* Tweak bot settings

* Merge webpack configuration (facebook#5722)

* 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

* Suggest Encore when not building a SPA with Symfony (facebook#5730)

* Suggest Encore when not building a SPA with Symfony

* Update README.md

* Add PR welcoming badge  (facebook#5759)

* add pr badge 🎉

* add rounded badge 💥

* Update README.md

* docs: Change Storybook install documentation (facebook#5779)

* Don't polyfill fetch for Node -- additional files (facebook#5789)

* docs: Simplify installing Storybook with npx (facebook#5788)

Reduce two-step install to just one step (per the latest storybook docs)

Change (i) `npm install -g @storybook/cli` and (ii) `sb init` to `npx -p @storybook/cli sb init`

Refs: https://storybook.js.org/basics/quick-start-guide/

* Rename 'getting started' link to 'docs' (facebook#5806)

* extra polyfills must be included manually (facebook#5814)

* extra polyfills must be included manually, fixes facebook#5795

* make note italicized

* React native repository updated in README.md (facebook#5849)

Create React Native App (https://github.com/react-community/create-react-native-app ) has been archived by the owner. It is now read-only.

* Make named-asset-import plugin work with export-as syntax (facebook#5573)

* update named-asset-import babel plugin

* add tests to named-asset-import plugin

* add more plugin test

* extract generateNewSource method, renaming variables

* extract replaceNotVisitedSpecifiers for export and import visitors

* remove visited list update from importDeclaration

* renaming methods and removing return directly instead of saving

* Add allowESModules option to babel-preset-react-app (facebook#5487)

* Add allowESModules option to babel-preset-react-app

* changes after feedback

* Apply suggestions from code review

Co-Authored-By: Pajn <rasmus@eneman.eu>

* fix: add `sideEffects: false` to react-error-overlay (facebook#5451)

This allows us to leave the import in the code, and webpack will still tree shake it out

* Fix TypeScript decorator support (facebook#5783)

* Fix TypeScript decorator support

* Update babel flow override

* WIP

* Fix annotated var test

* Upgrade babel deps

* Fix propertyDecorator test

* Always test with the latest stable Node version on Travis (facebook#5546)

* fix: make typescriptformatter support 0.5 of fork checker (facebook#5879)

* Fix link to page about running tests (facebook#5883)

* Some Grammar fixes (facebook#5858)

* Grammar fixes

1- For `Here's a `: The singular verb form ’s does not seem to agree with the plural subject a few common cases where you might want to try something else. Consider changing the verb form.

2- Added `A` before Reasonably : The noun phrase Reasonably good configuration seems to be missing a determiner before it. Consider adding an article. An article (a, an, or the) is a type of determiner. Possessive adjectives (my, his, our), possessive nouns (Joe’s, mother’s), and quantifiers (each, every) are also determiners. Single countable nouns usually require a determiner.

* Update README.md

* Run prettier on HTML files (facebook#5839)

* Remove unnecessary whitespace in template HTML

* Support setupTests.ts (facebook#5698)

* Disable copy to clipboard in cra --info (facebook#5905)

* Disable copy to clipboard in cra --info

Fixes an issue where npx create-react-app --info throws an exception on Windows. The exception was caused by envinfo's copy to clipboard functionality; envinfo is distributed pre-bundled, but the dependency it uses for copying to the clipboard makes use of a binary on Windows that can't be found once the bundle is made. Disabling copy to clipboard fixes the issue. Closes facebook#5757.

* Explicitly set clipboard to false

* Add placeholders to template README for bit.ly links. (facebook#5808)

* Add placeholders to template README for bit.ly links.

* Add placeholders to template README for goo.gl links.

* Update PWA link in README (facebook#5907)

* Add note to docs about using Sass and Flow together (facebook#5823)

* Add default values to `file_ext` note

* Update note to include a link to the relevant docs

* Update copy to indicate the default values

* Add missing space

* Correct some comments (facebook#5927)

And remove some outdated info from 1.x

* Add netlify.toml to prepare for deploy to netlify facebook#5807 (facebook#5930)

* commit toml

* full build path

* wow the path is long

* redirect

* Add pre-eject message about new features in v2 (facebook#5954)

* Add pre-eject message about new features in v2

* Make message bold

* Suggest a different default for speed reasons (facebook#5959)

Advanced users can opt into this behavior, but it's generally outside the users' control to fix and comes with performance concerns

* Add SASS_PATH instructions to Sass docs (facebook#5917)

`node-sass` supports the SASS_PATH variable that we can use. This PR adds that to the documentation.

* Add removeItem to localStorage mock in docs (facebook#5919)

* Improve error messaging in verifyPackageTree.js (facebook#5974)

* Use https for linked images in docs to fix mixed content warnings (facebook#5985)

* Update links to docs in all package README files (facebook#5912)

* Update links to docs in all package README files

* Fix formatting of issue template

* Fix formatting of issue template

* Added extension to .eslintrc (facebook#5988)

* Update eslint instructions in docs (facebook#5990)

* Add production build section to docs (facebook#5900)

* Make links to docs consistent in README (facebook#6000)

* Add docs for creating new TypeScript project (facebook#6015)

* add webp support for typescript (facebook#5978)

* add webp support for typescript

* moved webp declaration below png

* Fix Markdown comment in proxying docs (facebook#6009)

* Tweak contributing doc

* Prepare 2.1.2 release

* Publish

 - babel-plugin-named-asset-import@0.3.0
 - babel-preset-react-app@7.0.0
 - create-react-app@2.1.2
 - eslint-config-react-app@3.0.6
 - react-app-polyfill@0.2.0
 - react-dev-utils@7.0.0
 - react-error-overlay@5.1.1
 - react-scripts@2.1.2

* Add note to changelog

* Fix control comment fo CSS Grid prefixing (facebook#6061)

"on" value of "autoprefixer grid" is kinda deprecated. It's better to use "autoplace" or "no-autoplace" instead.
https://github.com/postcss/autoprefixer#options

"autoplace" enables PostCss' autoplace polyfill for ie and makes prefixes, "no-autoplace" only makes prefixes
https://github.com/postcss/autoprefixer#does-autoprefixer-polyfill-grid-layout-for-ie

* Update eslint instructions in docs (facebook#6084)

Add a note that it will work in IDE with 2.0.3 and later

* Generalize the Bootstrap documentation (facebook#5631)

* Generalize the adding bootstrap documentation

* Update adding-bootstrap.md

* Update adding-bootstrap.md

* Update adding-bootstrap.md

* Update lock bot config

* Typo fixes (facebook#6104)

<!--
Thank you for sending the PR!

If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots!

Happy contributing!
-->

* Fix comment typo (facebook#6036)

* Replace deprecated VSCode launch.json variable (facebook#6110)

Replace deprecated ${workspaceRoot} variable with ${workspaceFolder} in VSCode launch.json. See https://code.visualstudio.com/docs/editor/variables-reference#_why-isnt-workspaceroot-documented

* Update webpack-dev-server 3.1.9 -> 3.1.14 (facebook#6064)

* Update webpack-dev-server 3.1.9 -> 3.1.14

* Update adding-typescript.md

* Fix typo in CSS modules docs (facebook#6067)

* Prepare 2.1.3 release

* Publish

 - create-react-app@2.1.3
 - react-dev-utils@7.0.1
 - react-error-overlay@5.1.2
 - react-scripts@2.1.3

* Update CHANGELOG.md

* Fix CI and upgrade dependencies (facebook#6137)

* Upgrade a bunch of dependencies

* Turn off nightly Yarn

* Bump eslint-plugin-react version and update webpack config (facebook#6132)

* Bump eslint-plugin-react version

* Move eslint-plugin-react settings into eslint-config-react-app

* Add react/no-typos rule

* Switch to eval-source-map (facebook#5060)

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.

* Remove extra table cell (facebook#6141)

* update link for difference between proposal stages (facebook#6149)

seems the page which the old link points to has removed the related information.

* Update react-dev-util globby dependency to v8.0.2 (facebook#6162)

v8.0.2 was recently released https://github.com/sindresorhus/globby/releases to fix some pathing issues with dir-glob.

* Add note for global install of CLI (facebook#6157)

* Add note for global install of CLI

Closes facebook#6140.

* Add react/react-dom dependencies to relative-paths test fixture (facebook#6165)

* Update local-test.sh to return test exit code (facebook#6179)

The `e2e:docker` command can run tests in a Docker container, but it always returns exit code 0 even if the tests failed. This PR resolves that and returns the exit code from the test command.

* Upgrade @svgr/webpack to 4.1.0 (facebook#5816)

* Upgrade svgr to 4.0.3

* Upgrade svgr to 4.0.4

* Remove unnecessary prettier option

* Update to 4.1.0

* Move chalk dependency to react-dev-utils (facebook#6150)

Related to facebook#751

* Ignore node_modules in verifyNoTypeScript (facebook#6022)

* Add empty mock for module (facebook#5798)

* Changes to steps for publishing GitHub User Page (facebook#6095)

* Changes to steps for publishing GitHub User Page

Remove the the step for switching to gh-pages branch as it is no longer a viable option.

* Changed projects to project

* Update updating-to-new-releases.md with note about global installs (facebook#6190)

* Update updating-to-new-releases.md

Related to facebook#6140

* Update updating-to-new-releases.md

Linking to getting started following discussion on facebook#6190. 
Adapt terminology to current installation methods.

* Update updating-to-new-releases.md

typo, rleative link

* Update docusaurus/docs/updating-to-new-releases.md

Co-Authored-By: carpben <carpben@users.noreply.github.com>

* Update `serve` change listening port documentation (facebook#6229)

* [docs] Change serve port flag and add example

* [docs] Add --listen flag

* Fix e2e:docker test failure (facebook#6050)

* fix e2e:docker issue

* fix e2e tests

* Update stale config to ignore additional labels

* Prevent cursor events on app-logo svg (facebook#6276)

* Add '--no-watch' flag for tests (facebook#6285)

* Check for multiple project names when initializing (facebook#6080)

* Add `--no-watch` test flag to docs (facebook#6331)

* Add empty mock for dns (facebook#6292)

* Fix order of args in tasks/cra test (facebook#6342)

* Fix missing article in README (facebook#6346)

* Make manifest.json description more generic (facebook#6355)

* Speed up TypeScript projects (facebook#5903)

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.

![nov-26-2018 15-47-01](https://user-images.githubusercontent.com/5549148/49021284-9446fe80-f192-11e8-952b-8f83d77d5fbc.gif)


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 facebook#5820

* Update ZEIT Now deployment instructions (facebook#6359)

* Sass source map for dev (facebook#5713)

Sass source map for dev

* Upgrade Docusaurus and enable new features

* Use semicolons in the ProcessEnv interface (facebook#6364)

* Update babel-plugin-macros 2.4.4 -> 2.4.5 (facebook#6307)

As part of the latest babel-plugin-macros [2.4.5 release](https://github.com/kentcdodds/babel-plugin-macros/releases/tag/v2.4.5), there was a small fix that went in that fixes a [bug](kentcdodds/babel-plugin-macros#100) specifying the `babelMacros` entry in `package.json` no longer working. This patch version increase should remedy the issue and allow specifying babel macro configuration in the `package.json` file again (as stated in the [user docs](https://github.com/kentcdodds/babel-plugin-macros/blob/master/other/docs/user.md#config-experimental) of babel-plugin-macros)

* [docs] Warn/clarify that env vars are NOT "SECRET" (facebook#6062)

* [docs] Warn about storing secrets in env vars

Fixes facebook#5676

Co-Authored-By: Ian Schmitz <ianschmitz@gmail.com>

* [docs] Add NOT to REACT_APP_SECRET_CODE

Fixes facebook#5676

* [docs] Remove line breaks

* Add Jest typeahead plugin (facebook#5213)

* Add Jest typeahead plugin

* Update jest-watch-typeahead to 0.2.1

* Update docs links to prefer HTTPS for supported domains (facebook#6383)

* Update docs links to prefer HTTPS for supported domains

* Fix existing typos

* Revert "Check for multiple project names when initializing (facebook#6080)"

This reverts commit a78be99.

* Upgrade dependencies (facebook#6393)

* Prepare 2.1.4 release

* Publish

 - babel-plugin-named-asset-import@0.3.1
 - babel-preset-react-app@7.0.1
 - create-react-app@2.1.4
 - eslint-config-react-app@3.0.7
 - react-app-polyfill@0.2.1
 - react-dev-utils@7.0.2
 - react-error-overlay@5.1.3
 - react-scripts@2.1.4

* Move fork-ts-checker-webpack-plugin dependency to react-dev-utils (facebook#6395)

* Revert "Move fork-ts-checker-webpack-plugin dependency to react-dev-utils (facebook#6395)"

This reverts commit c2b7158.

* Revert "Speed up TypeScript projects (facebook#5903)"

This reverts commit 5ce09db.

* Prepare 2.1.5 release

* Publish

 - create-react-app@2.1.5
 - react-dev-utils@7.0.3
 - react-scripts@2.1.5

* Add information for usage custom registries on e2e testing facebook#4488 (facebook#5767)

* Update stale.yml

* Add forward ref to SVG Component (facebook#5457)

* 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

* Update the docs to match facebook#5846

* Exclude `.d.ts` files from TypeScript glob

* Revert "Switch to eval-source-map (facebook#5060)" (facebook#6444)

This reverts commit 773d103.

* Only use `yarn.lock.cached` if using the default Yarn registry (facebook#6253)

* Fix typo in doc (facebook#6454)

"Collocation" insead of "Colocation".

* Speed up TypeScript v2 (facebook#6406)

* Revert "Revert "Speed up TypeScript projects (facebook#5903)""

This reverts commit 544a594.

* 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 CODEOWNERS

* Convert all bit.ly links from http to https (facebook#6239)

* revert sass sourcemaps in development

* revert css sourcemaps in development (facebook#6472)

This fixes facebook#6399.

* Remove latest Node version from Travis config (facebook#6474)

* Use contenthash instead of chunkhash for better long-term caching (facebook#6387)

* remove webpack-bundle-analyzer

* remove webpack-bundle-analyzer

* Fix a typo

* Analyse also dependencies bundle (facebook#6438)

The current `analyze` script only analises the `/src` code. This change leverages new version of `source-map-explorer` that is able to analyse multiple bundles at once, including the  3rd party dependencies bundle which is in my opinion even more important to analyze.

* minor typo fix in openBrowser

* remove stats json

* remove argv

* Improved language used in markdown code blocks. (facebook#6419)

* Improved language used in code blocks.

* removed redundant statements (facebook#6254)

The enabled by default statement made sense when the developer was supposed to disable flow in order to use ts. Both those statements in there create some confusion about it in my opinion.

* Remove AppVeyor config files (facebook#6493)

* Fix build deployment instruction link appends comma at end (facebook#6511)

* Prepare 2.1.6 release

* Publish

 - babel-preset-react-app@7.0.2
 - confusing-browser-globals@1.0.6
 - create-react-app@2.1.6
 - eslint-config-react-app@3.0.8
 - react-app-polyfill@0.2.2
 - react-dev-utils@7.0.4
 - react-error-overlay@5.1.4
 - react-scripts@2.1.6

* Revert "Speed up TypeScript v2 (facebook#6406)" (facebook#6585)

This reverts commit 6a5b3cd.

* Prepare 2.1.7 release

* Publish

 - create-react-app@2.1.7
 - react-dev-utils@7.0.5
 - react-scripts@2.1.7

* Reapply "Speed up TypeScript v2 (facebook#6406)" (facebook#6586)

This reverts commit b2cf28b and reapplies facebook#6406.

* Prepare 2.1.8 release

* Publish

 - create-react-app@2.1.8
 - react-dev-utils@8.0.0
 - react-scripts@2.1.8

* [docs] revert removal of newlines from html (facebook#6386)

An unintended change was merged in facebook#6062

* Update webpack-dev-server to 3.2.1 (facebook#6483)

* Upgrade webpack-dev-server to 3.2.1

* Enable click to go to error in console for TypeScript (facebook#6502)

* reattempt changes

* formatter fixes

* fix missing colon in path

* revert path tweaking amends as per discussion with @ianschmitz

* Update html-webpack-plugin (facebook#6361)

* Convert JSON.stringify \n to os.EOL when writing tsconfig.json (facebook#6610)

* Change class components to functional components in templates (facebook#6451)

* change class component to function component

* Update packages/react-scripts/template/src/App.js

Co-Authored-By: xiaoxiangmoe <xiaoxiangmoe@gmail.com>

* Update packages/react-scripts/template-typescript/src/App.tsx

Co-Authored-By: xiaoxiangmoe <xiaoxiangmoe@gmail.com>

* Type check JSON files (facebook#6615)

* Make compiler variable const instead of let (facebook#6621)

compiler is not being reassigned, so we can use a const here

* Upgrade dependencies (facebook#6614)

* Upgrade dependencies

* Upgrade a couple missed deps

* Run Prettier over codebase

* Stage files for commit after ejecting (facebook#5960)

* add command to add files to staging after eject

* update console.log message

* wrap git add in a try/catch block

* return true & update log message

* add test to check if files were staged

* Fix check for staged files

* change named import into default import (facebook#6625)

* Add note about npx caching (facebook#6374)

* Add note about npx caching and link to facebook#6119

It is necessary to uninstall any version that was previously installed for the typescript flag to work when using npx.

* Use proper casing for TypeScript

Co-Authored-By: TaylorBriggs <TaylorBriggs@users.noreply.github.com>

* Add empty mock for http2 (facebook#5686)

* Support browserslist in @babel/preset-env (facebook#6608)

* Add browserslist support to @babel/preset-env

* Support @babel/polyfill in entry point

* Support React Hooks (facebook#5602) (facebook#5997)

* Add Babel plug-in for Hooks; Add ESLint plug-in for Hooks (WIP)

* Fix transform destructuring loose config

* Add eslint-plugin-react-hooks to package.json

* Fix package.json's

* Fix eslint-plugin-react-hooks version

* Fix package.json

* Fix package.json

* Add eslint-plugin-react-hooks to script package.json

* Force array destructuring to work in loose mode only for known Hooks

* Update based on feedback from PR

* Add 'exhaustive-deps' lint rule

* Bump eslint-plugin-react-hooks to stable version

* Remove extraneous dependency from react-scripts

* Add TypeScript linting support (facebook#6513)

* Initial pass adding typescript-eslint

* Add warning to shared rule set

* Add documentation for setting up VSCode extension

* Provide tsconfig path to typescript-eslitn

* Update to Jest 24 (facebook#6278)

* Update to jest 24

* Add notice about pnpResolver.js

* Formatting

* Fix linting

* Update to jest 24.1.0

* Update jest-pnp-resolver

* Swap create-react-app params in e2e scripts

* Add extraGlobals to supportedKeys

* Bump jest to 24.3.1

* Bump jest to 24.4.0

* Bumb jest to 24.5.0

* Update template dependencies jest to 24.5.0

* Debug failing test

* Remove jest-pnp-resolver

* Remove console.log

* Revert yarn.lock.cached

* Prepare 3.0.0 alpha release

* Unpin eslint-config-react-hooks dependency (facebook#6653)

* Add wait: false when opening app in browser (facebook#5821)

* Bump babel-eslint peerDependency in eslint-config-react-app (facebook#6662)

Sync the `babel-eslint` version between react-scripts and eslint-config-react-app

* Remove unused eslint comment (facebook#6674)

* Remove shrink-to-fit=no from templates (facebook#6669)

* Change app component declaration from arrow function to regular function (facebook#6655)

* Change app component declaration from arrow function to regular function

* Change TypeScript template back to an arrow function

* Remove duplicate url key in Docusaurus siteConfig (facebook#6690)

`url` was duplicated in `siteConfig.js`, both were the same value, so stripping one of them.

* Add deployment instructions with AWS Amplify (facebook#6208)

* Add AWS Amplify deployments to the CRA Docs

* Fixed typos

* added gif

* GIF link

* Update docusaurus/docs/deployment.md

* create-react-app to Create React App

* Update docusaurus/docs/deployment.md

* Removed extra verbiage.

* Removed GIF

* Add clarifying documentation for how to add a sass stylesheet on Windows (facebook#6322)

* Kill verdaccio in CI tasks cleanup (facebook#6700)

Fixes facebook#6663

* Docs: Add clarifying note about naming variables (facebook#6491)

* Remove project property from @typescript-eslint/parser options (facebook#6701)

* Remove project property from @typescript-eslint/parser options

The "project" property has a significant performance impact on linting,
and none our rules currently need it.

Fixes facebook#6661.

* Remove --coverage + --watch workaround (facebook#4176)

* Document .graphql and .gql file loading with graphql.macro (facebook#5481)

* Add explanation for adding everything as dependencies to docs (facebook#6082)

* Update available-scripts.md

add the reason for adding packages as dependencies

* Update available-scripts.md

* Update available-scripts.md

* Update available-scripts.md


Co-authored-by: Amy Lam <amy.r.lam@gmail.com>
Co-authored-by: Ian Sutherland <ian@iansutherland.ca>

* Cleanup Jest config (facebook#6654)

General cleanup after the [Jest 24 PR](facebook#6278). 

This also includes `jsdom@14` via https://www.npmjs.com/package/jest-environment-jsdom-fourteen. Since we have a node >= 8.10 requirement, we are able to use the latest version of `jsdom` which includes additional implementations of browser APIs such as `MutationObserver` (which we had an issue filed for over at facebook#6617).

/cc @SimenB. Is there more you recommend we do to cleanup our [Jest config](https://github.com/facebook/create-react-app/blob/b0cbf2caa18ee8267855b14578ebc3dee826f552/packages/react-scripts/scripts/utils/createJestConfig.js) for TypeScript?

Co-authored-by: Ian Sutherland <ian@iansutherland.ca>

* Add temporary workaround for Babel dependency issues in installs test suite (facebook#6757)

This is a temporary fix to get our test suites passing so we can finish work on the 3.0 release. We still need to find and fix the root cause of this issue: facebook#6679. This workaround should be removed once that's fixed.

* Enable futureEmitAssets in webpack config (facebook#6696)

* Only suggest that tsconfig.json is incorrect when SyntaxError is caught (facebook#6160)

Co-authored-by: Ian Sutherland <ian@iansutherland.ca>

* Fix unlogged yarn pnp message (facebook#6759)

* fix: terser-webpack-plugin hanging on WSL (facebook#6732)

* fix: terser-webpack-plugin hanging on WSL

* nits

* Merge branch 'master' into terser-parallel-bug-wsl

Co-authored-by: Jack Zhao <jzhao@fb.com>

* Replace deprecated SFC with FunctionComponent (facebook#6746)

* Add temporary workaround for Babel dependency issues in kitchensink-eject test suite (facebook#6762)

* Update to workbox-webpack-plugin v4 (facebook#6725)

* Update to workbox-webpack-plugin v4

* Update workbox-webpack-plugin to 4.2.0


Co-authored-by: Ian Sutherland <ian@iansutherland.ca>

* Adds PostCSS Normalize (facebook#5810)

* 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>

* Update fork-ts-checker-webpack-plugin out of alpha (facebook#6739)

<!--
Thank you for sending the PR!

If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots!

Happy contributing!
-->

* Update dependency versions (facebook#6767)

Includes only minor/patch version bumps.

* Update to core-js@3

* Revert "Update to core-js@3"

This reverts commit 7114965.

* Change NODE_ENV and PUBLIC_URL to readonly (facebook#6750)

* Add Render deployment section (facebook#6695)

* Update link to React Testing Library docs (facebook#6772)

* Warn when using react-scripts-ts (facebook#6770)

* Warn when using react-scripts-ts

* Update node/npm min version references

* Fix code comment typo (facebook#6775)

* Remove unused babel-loader from babel-preset-react-app (facebook#6780)

* Add SVG support dependency note (facebook#6783)

* Clarify production build output files documentation (facebook#6786)

* Add link to TypeScript page in Getting Started (facebook#6817)

This also updates our min version of Node that we ask for

* Fix minimum React version for SVG component support (facebook#6820)

* Copy fix (facebook#6801)

* Update to core-js@3 (facebook#6769)

* Update to core-js@3

* Remove references to @babel/polyfill

* InlineChunkHtmlPlugin works with empty publicPath (facebook#6735)

* InlineChunkHtmlPlugin works with empty publicPath

* Update as requested

* Fix react-scripts peer dependencies link local issue (facebook#6579) (facebook#6580)

* Move list of files under `files` key in asset manifest (facebook#6821)

* Update testMatch to also be compatible with Jest 24 (facebook#6313)

* Add directory details to packages/* package.json (facebook#6826)

Specifying the directory as part of the repository field in a
package.json allows third party tools to provide better support when
working with monorepos. For example, it allows them to correctly
construct a commit diff for a specific package.

This format was accepted by npm in [npm/rfcs#19](npm/rfcs#19).

* Set baseUrl from jsconfig.json/tsconfig.json (facebook#6656)

* 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>

* Prepare 3.0.0 alpha release

* Upgrade to Lerna v3 (facebook#6829)

* Upgrade Lerna to 3.13.2

* Remove independent argument to Lerna

* Update publish command

* Prepare 3.0.0 alpha release

* Relax ESLint version range (facebook#6840)

* Relax eslint version range

* Use semver package to compare versions during preflight check

* Cleanup package.json files whitespace

* Change Create React App version in `react-scripts` eject warning (facebook#6845)

* fix: change CRA version in eject warning

* Update eject.js

* Remove no-watch flag in favor of watchAll=false (facebook#6848)

* Add baseUrl documentation (facebook#6847)

* Add baseUrl documentation

* Update docusaurus/docs/importing-a-component.md

Co-Authored-By: ianschmitz <ianschmitz@gmail.com>

* Update docusaurus/docs/importing-a-component.md

Co-Authored-By: ianschmitz <ianschmitz@gmail.com>

* Simplify include to match default tsconfig.json

* Update fsevents dependency version (facebook#6843)

Fixes facebook#6852.

I update the dependency version of fsevents because old versions was vulnerable (CWE-59). Vulnerability found with snyk.io report

* Update stale.yml

* Prepare 3.0.0 release

* Publish

 - babel-plugin-named-asset-import@0.3.2
 - babel-preset-react-app@8.0.0
 - confusing-browser-globals@1.0.7
 - create-react-app@3.0.0
 - eslint-config-react-app@4.0.0
 - react-app-polyfill@1.0.0
 - react-dev-utils@9.0.0
 - react-error-overlay@5.1.5
 - react-scripts@3.0.0

* Fix typo in README.md (facebook#6879)

* Fix no-useless-constructor rule in TypeScript (facebook#6862)

* Remove body padding reset from templates (facebook#6300)

* remove padding 0 on body from default styles

* Update index.css

* Fix typo in deployment docs (facebook#6881)

Typo : preache => precache

* Improve styling of "get started" button (facebook#6810)

* Generate SVG component name in Jest fileTransform (facebook#6706)

* Grammar! (facebook#6935)

Fix copy

* Change cssmodule classname hash to use repo relative paths (facebook#6876)

* Change cssmodule classname hash to use repo relative paths instead of system absolute paths

* Update dependencies babel preset with recent changes (facebook#6887)

* Update dependencies preset to support browserslist

* Loose mode array destructuring for hooks in dependencies

* Remove `Object.assign` from `MiniCssExtractPlugin` options (facebook#6854)

* Update GraphQL doc (facebook#6898)

* Need to install graphql package
* Need to provide real graphql in the .graphql file, not gql wrapped graphql

* Add clarifying note to TypeScript docs warning about global install of CRA (facebook#6945)

Added block quote with warning about issues when CRA is installed globally.

* Adds the configuration for PnP/Typescript (facebook#6856)

* Adds the configuration for PnP/Typescript

* Adds the header

* Bumps ts-pnp

* Bumps fork-ts-checker-webpack-plugin

* Disable default-case lint rule for TypeScript (facebook#6937)

* Add note to restart the dev server after changing .env file (facebook#6979)

* Add note to restart the dev server after change .env file

* Update copy

Co-authored-by: Ian Sutherland <ian@iansutherland.ca>

* Temporary fix for babel-jest preflight error (facebook#7002)

* Temporary fix for babel-jest preflight error

* Update babel-jest in react-error-overlay

* Disable no-dupe-class-members for TypeScript (facebook#6987)

* Unpin babel-jest (facebook#7007)

* Revert PR facebook#6935 because CLA was not signed (facebook#7016)

This reverts commit e5f69b5.

* Prepare 3.0.1 release

* Publish

 - babel-preset-react-app@9.0.0
 - create-react-app@3.0.1
 - eslint-config-react-app@4.0.1
 - react-app-polyfill@1.0.1
 - react-dev-utils@9.0.1
 - react-error-overlay@5.1.6
 - react-scripts@3.0.1

* update version

* update package name

* repair oem problem

* remove unuse webpack config
jackmccloy added a commit to amplitude/create-react-app that referenced this issue Feb 13, 2020
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.

![nov-26-2018 15-47-01](https://user-images.githubusercontent.com/5549148/49021284-9446fe80-f192-11e8-952b-8f83d77d5fbc.gif)


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 facebook#5820
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

8 participants