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

fix(react-scripts): proactively append to .gitignore during generation #8028

Merged
merged 1 commit into from Dec 18, 2019

Conversation

bmuenzenmeyer
Copy link
Contributor

@bmuenzenmeyer bmuenzenmeyer commented Nov 25, 2019

close #7892

Proactively append to .gitignore during generation instead relying on a try/catch

As #7892 illustrates, relying on the EEXISTS error is not reliable after the fs-extra@8.X upgrade. This fact was confirmed by the fs-extra team when I opened an an issue with them.

The solution is to check whether or not .gitignore exists in the current repo and proactively append gitignore to it, rather than rely on the try catch logic to sniff for EEXISTS / dest already exists errors from fs-extra

Testing

I attempted to test this:

  1. adding a directory to the monorepo, foo
  2. placing a .gitignore into it with contents.
  3. I commit that to avoid the git status porcelain check
  4. Run yarn create-react-app foo --template typescript

This succeeds, but gives me warnings about not having a version that supports template. If I do not supply a template, the CLI tells me none was applied.

When I run this without the template arg, I get a reverse error message, stating no template was applied. Having maintained a fork for a long time, I know not to rely on the npm script create-react-app as gospel for a real generation. I also know that this new template functionality is still in progress - so I am guessing it's just a quick of this being a bit in-flight.

I think a better approach may be to add a check for this proper appending via CI, but I wanted to get this out here first. I'd also state that the code is pretty darn simple, mostly co-opted from the existing try / catch, and that I don't see any .gitignore coverage currently in the e2e tests. Perhaps a visual review is okay without a formal test - but I'll leave that to the maintainers to decide.

Copy link
Contributor

@mrmckeb mrmckeb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes sense to me, and looks good. I'm not sure it can make it into 3.3, but it is a candidate for the next release.

@mrmckeb mrmckeb added this to the 3.3 milestone Dec 1, 2019
@mrmckeb mrmckeb added this to In progress in v3.3 via automation Dec 1, 2019
@mrmckeb mrmckeb modified the milestones: 3.3, 3.4 Dec 1, 2019
@mrmckeb mrmckeb removed this from In progress in v3.3 Dec 1, 2019
@bmuenzenmeyer
Copy link
Contributor Author

Thanks for the approval. Understand timing is sometimes tough, but as far as I know not including this will cause a bug in 3.3.0

https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/package.json#L54

@bmuenzenmeyer
Copy link
Contributor Author

I've confirmed that not including this PR is causing a bug in create-react-app@3.3.0

/c/src/tmp
$ mkdir cra330
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/c/src/tmp
$ cd cra330
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/c/src/tmp/cra330
$ touch .gitignore
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/c/src/tmp/cra330
$ ls
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/c/src/tmp/cra330
$ ls -ltra
total 8
drwxr-xr-x 1 DHC+Z002QH8 2147484161 0 Dec  6 09:17 ../
drwxr-xr-x 1 DHC+Z002QH8 2147484161 0 Dec  6 09:17 ./
-rw-r--r-- 1 DHC+Z002QH8 2147484161 0 Dec  6 09:17 .gitignore
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/c/src/tmp/cra330
$ npx create-react-app@latest .
npx: installed 91 in 44.728s

Creating a new React app in C:\src\tmp\cra330.

Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts with cra-template...

yarn add v1.9.2
info No lockfile found.
[1/4] Resolving packages...
warning react-scripts > babel-jest > @jest/transform > jest-haste-map > fsevents@1.2.9: One of your dependencies needs to upgrade to fsevents v2: 1) Proper nodejs v10+ support 2) No more fetching binaries from AWS, smaller package size
warning react-scripts > webpack-dev-server > chokidar > fsevents@1.2.9: One of your dependencies needs to upgrade to fsevents v2: 1) Proper nodejs v10+ support 2) No more fetching binaries from AWS, smaller package size
warning react-scripts > jest > jest-cli > jest-config > jest-environment-jsdom > jsdom > left-pad@1.3.0: use String.prototype.padStart()
warning react-scripts > workbox-webpack-plugin > workbox-build > strip-comments > babel-plugin-transform-object-rest-spread > babel-runtime > core-js@2.6.10: core-js@<3.0 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
[2/4] Fetching packages...
[---------------------------------------------------------------------------------------------------------------] 0/1372(node:20716) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
info fsevents@2.1.2: The platform "win32" is incompatible with this module.
info "fsevents@2.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.9: The platform "win32" is incompatible with this module.
info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "react-scripts > sass-loader@8.0.0" has unmet peer dependency "node-sass@^4.0.0".
warning "react-scripts > sass-loader@8.0.0" has unmet peer dependency "sass@^1.3.0".
warning "react-scripts > sass-loader@8.0.0" has unmet peer dependency "fibers@>= 3.1.0".
warning "react-scripts > @typescript-eslint/eslint-plugin > tsutils@3.17.1" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta".
warning " > react-scripts@3.3.0" has unmet peer dependency "typescript@^3.2.1".
[4/4] Building fresh packages...
success Saved lockfile.
warning Your current version of Yarn is out of date. The latest version is "1.19.2", while you're on "1.9.2".
info To upgrade, download the latest installer at "https://yarnpkg.com/latest.msi".
success Saved 840 new dependencies.
info Direct dependencies
├─ cra-template@1.0.0
├─ react-dom@16.12.0
├─ react-scripts@3.3.0
└─ react@16.12.0
info All dependencies
├─ @babel/generator@7.7.4
├─ @babel/helper-builder-binary-assignment-operator-visitor@7.7.4
├─ @babel/helper-builder-react-jsx@7.7.4
├─ @babel/helper-call-delegate@7.7.4
├─ @babel/helper-define-map@7.7.4
├─ @babel/helper-explode-assignable-expression@7.7.4
├─ @babel/helper-module-transforms@7.7.5
├─ @babel/helper-regex@7.5.5
├─ @babel/helper-wrap-function@7.7.4
├─ @babel/highlight@7.5.0
├─ @babel/parser@7.7.5
├─ @babel/plugin-proposal-class-properties@7.7.4
├─ @babel/plugin-proposal-decorators@7.7.4
├─ @babel/plugin-proposal-nullish-coalescing-operator@7.7.4
├─ @babel/plugin-proposal-numeric-separator@7.7.4
├─ @babel/plugin-proposal-optional-chaining@7.7.4
├─ @babel/plugin-syntax-decorators@7.7.4
├─ @babel/plugin-syntax-flow@7.7.4
├─ @babel/plugin-syntax-nullish-coalescing-operator@7.7.4
├─ @babel/plugin-syntax-numeric-separator@7.7.4
├─ @babel/plugin-syntax-optional-chaining@7.7.4
├─ @babel/plugin-syntax-typescript@7.7.4
├─ @babel/plugin-transform-flow-strip-types@7.7.4
├─ @babel/plugin-transform-modules-amd@7.7.5
├─ @babel/plugin-transform-modules-commonjs@7.7.5
├─ @babel/plugin-transform-react-display-name@7.7.4
├─ @babel/plugin-transform-react-jsx-self@7.7.4
├─ @babel/plugin-transform-react-jsx-source@7.7.4
├─ @babel/plugin-transform-react-jsx@7.7.4
├─ @babel/plugin-transform-regenerator@7.7.5
├─ @babel/plugin-transform-runtime@7.7.4
├─ @babel/plugin-transform-typescript@7.7.4
├─ @babel/preset-env@7.7.4
├─ @babel/preset-react@7.7.4
├─ @babel/preset-typescript@7.7.4
├─ @babel/runtime-corejs3@7.7.5
├─ @babel/runtime@7.7.5
├─ @cnakazawa/watch@1.0.3
├─ @csstools/normalize.css@10.1.0
├─ @hapi/address@2.1.4
├─ @hapi/bourne@1.3.2
├─ @hapi/hoek@8.5.0
├─ @hapi/joi@15.1.1
├─ @hapi/topo@3.1.6
├─ @jest/core@24.9.0
├─ @jest/reporters@24.9.0
├─ @jest/source-map@24.9.0
├─ @jest/test-sequencer@24.9.0
├─ @mrmlnc/readdir-enhanced@2.2.1
├─ @nodelib/fs.stat@1.1.3
├─ @svgr/babel-plugin-add-jsx-attribute@4.2.0
├─ @svgr/babel-plugin-remove-jsx-attribute@4.2.0
├─ @svgr/babel-plugin-remove-jsx-empty-expression@4.2.0
├─ @svgr/babel-plugin-replace-jsx-attribute-value@4.2.0
├─ @svgr/babel-plugin-svg-dynamic-title@4.3.3
├─ @svgr/babel-plugin-svg-em-dimensions@4.2.0
├─ @svgr/babel-plugin-transform-react-native-svg@4.2.0
├─ @svgr/babel-plugin-transform-svg-component@4.2.0
├─ @svgr/babel-preset@4.3.3
├─ @svgr/core@4.3.3
├─ @svgr/hast-util-to-babel-ast@4.3.2
├─ @svgr/plugin-svgo@4.3.1
├─ @svgr/webpack@4.3.3
├─ @types/babel__core@7.1.3
├─ @types/babel__generator@7.6.0
├─ @types/babel__template@7.0.2
├─ @types/babel__traverse@7.0.8
├─ @types/eslint-visitor-keys@1.0.0
├─ @types/events@3.0.0
├─ @types/glob@7.1.1
├─ @types/istanbul-lib-report@1.1.1
├─ @types/istanbul-reports@1.1.1
├─ @types/json-schema@7.0.3
├─ @types/minimatch@3.0.3
├─ @types/node@12.12.14
├─ @types/parse-json@4.0.0
├─ @types/q@1.5.2
├─ @types/stack-utils@1.0.1
├─ @types/yargs-parser@13.1.0
├─ @typescript-eslint/eslint-plugin@2.10.0
├─ @typescript-eslint/parser@2.10.0
├─ @webassemblyjs/floating-point-hex-parser@1.8.5
├─ @webassemblyjs/helper-code-frame@1.8.5
├─ @webassemblyjs/helper-fsm@1.8.5
├─ @webassemblyjs/helper-wasm-section@1.8.5
├─ @webassemblyjs/wasm-edit@1.8.5
├─ @webassemblyjs/wasm-opt@1.8.5
├─ @xtuc/ieee754@1.2.0
├─ accepts@1.3.7
├─ acorn-globals@4.3.4
├─ acorn-walk@6.2.0
├─ acorn@6.4.0
├─ address@1.1.2
├─ adjust-sourcemap-loader@2.0.0
├─ aggregate-error@3.0.1
├─ ajv-errors@1.0.1
├─ ajv@6.10.2
├─ ansi-colors@3.2.4
├─ ansi-html@0.0.7
├─ aproba@1.2.0
├─ argparse@1.0.10
├─ aria-query@3.0.0
├─ arity-n@1.0.4
├─ arr-flatten@1.1.0
├─ array-flatten@1.1.1
├─ array-uniq@1.0.3
├─ arrify@1.0.1
├─ asap@2.0.6
├─ asn1.js@4.10.1
├─ asn1@0.2.4
├─ assert@1.4.1
├─ assign-symbols@1.0.0
├─ ast-types-flow@0.0.7
├─ async-each@1.0.3
├─ async@2.6.3
├─ asynckit@0.4.0
├─ atob@2.1.2
├─ autoprefixer@9.7.3
├─ aws-sign2@0.7.0
├─ aws4@1.9.0
├─ axobject-query@2.1.1
├─ babel-code-frame@6.26.0
├─ babel-eslint@10.0.3
├─ babel-extract-comments@1.0.0
├─ babel-loader@8.0.6
├─ babel-plugin-jest-hoist@24.9.0
├─ babel-plugin-macros@2.7.1
├─ babel-plugin-named-asset-import@0.3.5
├─ babel-plugin-syntax-object-rest-spread@6.13.0
├─ babel-plugin-transform-object-rest-spread@6.26.0
├─ babel-plugin-transform-react-remove-prop-types@0.4.24
├─ babel-preset-jest@24.9.0
├─ babel-preset-react-app@9.1.0
├─ babel-runtime@6.26.0
├─ babylon@6.18.0
├─ base@0.11.2
├─ base64-js@1.3.1
├─ batch@0.6.1
├─ bcrypt-pbkdf@1.0.2
├─ big.js@5.2.2
├─ binary-extensions@1.13.1
├─ bluebird@3.7.2
├─ body-parser@1.19.0
├─ bonjour@3.5.0
├─ brace-expansion@1.1.11
├─ braces@2.3.2
├─ browser-process-hrtime@0.1.3
├─ browser-resolve@1.11.3
├─ browserify-aes@1.2.0
├─ browserify-cipher@1.0.1
├─ browserify-des@1.0.2
├─ browserify-sign@4.0.4
├─ browserify-zlib@0.2.0
├─ bser@2.1.1
├─ buffer-indexof@1.1.1
├─ buffer-xor@1.0.3
├─ buffer@4.9.2
├─ builtin-status-codes@3.0.0
├─ cacache@13.0.1
├─ cache-base@1.0.1
├─ call-me-maybe@1.0.1
├─ caller-callsite@2.0.0
├─ caller-path@2.0.0
├─ camel-case@3.0.0
├─ caniuse-lite@1.0.30001015
├─ capture-exit@2.0.0
├─ case-sensitive-paths-webpack-plugin@2.2.0
├─ caseless@0.12.0
├─ chardet@0.7.0
├─ chokidar@2.1.8
├─ chownr@1.1.3
├─ chrome-trace-event@1.0.2
├─ ci-info@2.0.0
├─ class-utils@0.3.6
├─ clean-css@4.2.1
├─ clean-stack@2.2.0
├─ cli-cursor@2.1.0
├─ cliui@5.0.0
├─ clone-deep@4.0.1
├─ co@4.6.0
├─ coa@2.0.2
├─ code-point-at@1.1.0
├─ collection-visit@1.0.0
├─ color-convert@1.9.3
├─ color-name@1.1.3
├─ color-string@1.5.3
├─ color@3.1.2
├─ combined-stream@1.0.8
├─ commander@2.20.3
├─ common-tags@1.8.0
├─ compose-function@3.0.3
├─ compressible@2.0.17
├─ compression@1.7.4
├─ concat-map@0.0.1
├─ concat-stream@1.6.2
├─ confusing-browser-globals@1.0.9
├─ connect-history-api-fallback@1.6.0
├─ console-browserify@1.2.0
├─ constants-browserify@1.0.0
├─ contains-path@0.1.0
├─ content-disposition@0.5.3
├─ convert-source-map@1.7.0
├─ cookie-signature@1.0.6
├─ cookie@0.4.0
├─ copy-concurrently@1.0.5
├─ copy-descriptor@0.1.1
├─ core-js-compat@3.4.7
├─ core-js-pure@3.4.7
├─ core-js@3.4.7
├─ core-util-is@1.0.2
├─ cra-template@1.0.0
├─ create-ecdh@4.0.3
├─ create-hmac@1.1.7
├─ cross-spawn@6.0.5
├─ crypto-browserify@3.12.0
├─ css-blank-pseudo@0.1.4
├─ css-color-names@0.0.4
├─ css-declaration-sorter@4.0.1
├─ css-has-pseudo@0.10.0
├─ css-loader@3.2.0
├─ css-prefers-color-scheme@3.1.1
├─ css-select-base-adapter@0.1.1
├─ css-select@1.2.0
├─ css-unit-converter@1.1.1
├─ css-what@2.1.3
├─ css@2.2.4
├─ cssdb@4.4.0
├─ cssnano-preset-default@4.0.7
├─ cssnano-util-raw-cache@4.0.1
├─ cssnano-util-same-parent@4.0.1
├─ cssnano@4.1.10
├─ csso@4.0.2
├─ cssom@0.3.8
├─ cssstyle@1.4.0
├─ cyclist@1.0.1
├─ d@1.0.1
├─ damerau-levenshtein@1.0.5
├─ dashdash@1.14.1
├─ data-urls@1.1.0
├─ debug@2.6.9
├─ decode-uri-component@0.2.0
├─ deep-equal@1.1.1
├─ deep-is@0.1.3
├─ default-gateway@4.2.0
├─ del@4.1.1
├─ delayed-stream@1.0.0
├─ des.js@1.0.1
├─ destroy@1.0.4
├─ detect-newline@2.1.0
├─ detect-node@2.0.4
├─ detect-port-alt@1.1.6
├─ diff-sequences@24.9.0
├─ diffie-hellman@5.0.3
├─ dir-glob@2.0.0
├─ dns-equal@1.0.0
├─ dns-packet@1.3.1
├─ dns-txt@2.0.2
├─ doctrine@1.5.0
├─ dom-converter@0.2.0
├─ domain-browser@1.2.0
├─ domhandler@2.4.2
├─ domutils@1.7.0
├─ dot-prop@4.2.0
├─ dotenv-expand@5.1.0
├─ dotenv@8.2.0
├─ duplexer@0.1.1
├─ duplexify@3.7.1
├─ ecc-jsbn@0.1.2
├─ ee-first@1.1.1
├─ electron-to-chromium@1.3.322
├─ emoji-regex@7.0.3
├─ emojis-list@2.1.0
├─ enhanced-resolve@4.1.1
├─ entities@2.0.0
├─ errno@0.1.7
├─ error-ex@1.3.2
├─ es-abstract@1.16.3
├─ es-to-primitive@1.2.1
├─ es5-ext@0.10.53
├─ es6-iterator@2.0.3
├─ es6-symbol@3.1.3
├─ escape-string-regexp@1.0.5
├─ escodegen@1.12.0
├─ eslint-config-react-app@5.1.0
├─ eslint-import-resolver-node@0.3.2
├─ eslint-loader@3.0.2
├─ eslint-module-utils@2.4.1
├─ eslint-plugin-flowtype@3.13.0
├─ eslint-plugin-import@2.18.2
├─ eslint-plugin-jsx-a11y@6.2.3
├─ eslint-plugin-react-hooks@1.7.0
├─ eslint-plugin-react@7.16.0
├─ eslint@6.7.2
├─ espree@6.1.2
├─ esprima@4.0.1
├─ esquery@1.0.1
├─ estraverse@4.3.0
├─ esutils@2.0.3
├─ eventemitter3@4.0.0
├─ events@3.0.0
├─ eventsource@1.0.7
├─ expand-brackets@2.1.4
├─ express@4.17.1
├─ ext@1.4.0
├─ extend@3.0.2
├─ extglob@2.0.4
├─ extsprintf@1.3.0
├─ fast-deep-equal@2.0.1
├─ fast-glob@2.2.7
├─ fast-levenshtein@2.0.6
├─ faye-websocket@0.10.0
├─ figures@2.0.0
├─ file-entry-cache@5.0.1
├─ file-loader@4.3.0
├─ filesize@3.6.1
├─ fill-range@4.0.0
├─ finalhandler@1.1.2
├─ find-cache-dir@2.1.0
├─ flat-cache@2.0.1
├─ flatted@2.0.1
├─ flatten@1.0.3
├─ flush-write-stream@1.1.1
├─ follow-redirects@1.9.0
├─ for-in@1.0.2
├─ for-own@0.1.5
├─ forever-agent@0.6.1
├─ fork-ts-checker-webpack-plugin@3.1.0
├─ form-data@2.3.3
├─ forwarded@0.1.2
├─ from2@2.3.0
├─ fs.realpath@1.0.0
├─ get-caller-file@2.0.5
├─ get-own-enumerable-property-symbols@3.0.1
├─ get-stream@4.1.0
├─ get-value@2.0.6
├─ getpass@0.1.7
├─ glob-to-regexp@0.3.0
├─ global-modules@2.0.0
├─ global-prefix@3.0.0
├─ globby@8.0.2
├─ growly@1.3.0
├─ gzip-size@5.1.1
├─ handle-thing@2.0.0
├─ handlebars@4.5.3
├─ har-schema@2.0.0
├─ har-validator@5.1.3
├─ harmony-reflect@1.6.1
├─ has-ansi@2.0.0
├─ has-value@1.0.0
├─ has-values@1.0.0
├─ hash.js@1.1.7
├─ he@1.2.0
├─ hex-color-regex@1.1.0
├─ hmac-drbg@1.0.1
├─ hosted-git-info@2.8.5
├─ hpack.js@2.1.6
├─ hsl-regex@1.0.0
├─ hsla-regex@1.0.0
├─ html-comment-regex@1.1.2
├─ html-entities@1.2.1
├─ html-minifier@3.5.21
├─ html-webpack-plugin@4.0.0-beta.5
├─ htmlparser2@3.10.1
├─ http-deceiver@1.2.7
├─ http-parser-js@0.4.10
├─ http-proxy-middleware@0.19.1
├─ http-proxy@1.18.0
├─ http-signature@1.2.0
├─ https-browserify@1.0.0
├─ icss-utils@4.1.1
├─ identity-obj-proxy@3.0.0
├─ ieee754@1.1.13
├─ ignore@4.0.6
├─ immer@1.10.0
├─ import-cwd@2.1.0
├─ import-fresh@3.2.1
├─ import-from@2.1.0
├─ indent-string@4.0.0
├─ infer-owner@1.0.4
├─ inflight@1.0.6
├─ ini@1.3.5
├─ inquirer@6.5.0
├─ internal-ip@4.3.0
├─ invariant@2.2.4
├─ invert-kv@2.0.0
├─ ip-regex@2.1.0
├─ ip@1.1.5
├─ ipaddr.js@1.9.1
├─ is-absolute-url@3.0.3
├─ is-accessor-descriptor@1.0.0
├─ is-arguments@1.0.4
├─ is-arrayish@0.2.1
├─ is-binary-path@1.0.1
├─ is-color-stop@1.1.0
├─ is-data-descriptor@1.0.0
├─ is-descriptor@1.0.2
├─ is-directory@0.3.1
├─ is-extglob@2.1.1
├─ is-generator-fn@2.1.0
├─ is-obj@1.0.1
├─ is-path-cwd@2.2.0
├─ is-path-in-cwd@2.1.0
├─ is-path-inside@2.1.0
├─ is-plain-obj@1.1.0
├─ is-plain-object@2.0.4
├─ is-promise@2.1.0
├─ is-regexp@1.0.0
├─ is-resolvable@1.1.0
├─ is-root@2.1.0
├─ is-stream@1.1.0
├─ is-svg@3.0.0
├─ is-symbol@1.0.3
├─ is-typedarray@1.0.0
├─ is-windows@1.0.2
├─ isarray@1.0.0
├─ isexe@2.0.0
├─ isstream@0.1.2
├─ istanbul-lib-instrument@3.3.0
├─ istanbul-lib-report@2.0.8
├─ istanbul-lib-source-maps@3.0.6
├─ istanbul-reports@2.2.6
├─ jest-changed-files@24.9.0
├─ jest-cli@24.9.0
├─ jest-docblock@24.9.0
├─ jest-each@24.9.0
├─ jest-environment-jsdom-fourteen@0.1.0
├─ jest-environment-jsdom@24.9.0
├─ jest-environment-node@24.9.0
├─ jest-leak-detector@24.9.0
├─ jest-pnp-resolver@1.2.1
├─ jest-resolve-dependencies@24.9.0
├─ jest-serializer@24.9.0
├─ jest-watch-typeahead@0.4.2
├─ jest-watcher@24.9.0
├─ jest@24.9.0
├─ js-tokens@4.0.0
├─ jsdom@14.1.0
├─ jsesc@2.5.2
├─ json-schema-traverse@0.4.1
├─ json-schema@0.2.3
├─ json-stable-stringify-without-jsonify@1.0.1
├─ json-stable-stringify@1.0.1
├─ json-stringify-safe@5.0.1
├─ json3@3.3.3
├─ jsonify@0.0.0
├─ jsprim@1.4.1
├─ killable@1.0.1
├─ kind-of@3.2.2
├─ kleur@3.0.3
├─ last-call-webpack-plugin@3.0.0
├─ lazy-cache@1.0.4
├─ lcid@2.0.0
├─ left-pad@1.3.0
├─ leven@3.1.0
├─ levn@0.3.0
├─ lines-and-columns@1.1.6
├─ load-json-file@2.0.0
├─ loader-fs-cache@1.0.2
├─ loader-runner@2.4.0
├─ locate-path@3.0.0
├─ lodash.memoize@4.1.2
├─ lodash.template@4.5.0
├─ lodash.templatesettings@4.2.0
├─ lodash.unescape@4.0.1
├─ lodash.uniq@4.5.0
├─ loglevel@1.6.6
├─ loose-envify@1.4.0
├─ lower-case@1.1.4
├─ makeerror@1.0.11
├─ mamacro@0.0.3
├─ map-age-cleaner@0.1.3
├─ map-visit@1.0.0
├─ mdn-data@2.0.4
├─ media-typer@0.3.0
├─ mem@4.3.0
├─ merge-deep@3.0.2
├─ merge-descriptors@1.0.1
├─ merge-stream@2.0.0
├─ merge2@1.3.0
├─ methods@1.1.2
├─ microevent.ts@0.1.1
├─ miller-rabin@4.0.1
├─ mime-db@1.42.0
├─ mime-types@2.1.25
├─ mimic-fn@2.1.0
├─ mini-css-extract-plugin@0.8.0
├─ minimalistic-crypto-utils@1.0.1
├─ minimatch@3.0.4
├─ minimist@1.2.0
├─ minipass-collect@1.0.2
├─ minipass-flush@1.0.5
├─ minipass-pipeline@1.2.2
├─ minipass@3.1.1
├─ mississippi@3.0.0
├─ mixin-deep@1.3.2
├─ mixin-object@2.0.1
├─ mkdirp@0.5.1
├─ multicast-dns-service-types@1.1.0
├─ multicast-dns@6.2.3
├─ mute-stream@0.0.7
├─ nanomatch@1.2.13
├─ negotiator@0.6.2
├─ neo-async@2.6.1
├─ next-tick@1.0.0
├─ nice-try@1.0.5
├─ node-forge@0.9.0
├─ node-int64@0.4.0
├─ node-libs-browser@2.2.1
├─ node-modules-regexp@1.0.0
├─ node-notifier@5.4.3
├─ node-releases@1.1.42
├─ normalize-range@0.1.2
├─ normalize-url@1.9.1
├─ npm-run-path@2.0.2
├─ nth-check@1.0.2
├─ num2fraction@1.2.2
├─ number-is-nan@1.0.1
├─ nwsapi@2.2.0
├─ oauth-sign@0.9.0
├─ object-assign@4.1.1
├─ object-copy@0.1.0
├─ object-hash@1.3.1
├─ object-inspect@1.7.0
├─ object-is@1.0.1
├─ object-path@0.11.4
├─ object.fromentries@2.0.1
├─ object.getownpropertydescriptors@2.0.3
├─ obuf@1.1.2
├─ on-headers@1.0.2
├─ onetime@2.0.1
├─ open@7.0.0
├─ opn@5.5.0
├─ optimist@0.6.1
├─ optimize-css-assets-webpack-plugin@5.0.3
├─ optionator@0.8.3
├─ original@1.0.2
├─ os-browserify@0.3.0
├─ os-locale@3.1.0
├─ os-tmpdir@1.0.2
├─ p-defer@1.0.0
├─ p-each-series@1.0.0
├─ p-finally@1.0.0
├─ p-is-promise@2.1.0
├─ p-limit@2.2.1
├─ p-locate@3.0.0
├─ p-map@2.1.0
├─ p-reduce@1.0.0
├─ p-retry@3.0.1
├─ p-try@2.2.0
├─ pako@1.0.10
├─ parallel-transform@1.2.0
├─ param-case@2.1.1
├─ parent-module@1.0.1
├─ parse5@5.1.0
├─ pascalcase@0.1.1
├─ path-browserify@0.0.1
├─ path-dirname@1.0.2
├─ path-is-inside@1.0.2
├─ path-key@2.0.1
├─ path-to-regexp@0.1.7
├─ pinkie@2.0.4
├─ pirates@4.0.1
├─ pkg-up@2.0.0
├─ pnp-webpack-plugin@1.5.0
├─ portfinder@1.0.25
├─ posix-character-classes@0.1.1
├─ postcss-attribute-case-insensitive@4.0.1
├─ postcss-browser-comments@3.0.0
├─ postcss-calc@7.0.1
├─ postcss-color-functional-notation@2.0.1
├─ postcss-color-gray@5.0.0
├─ postcss-color-hex-alpha@5.0.3
├─ postcss-color-mod-function@3.0.3
├─ postcss-color-rebeccapurple@4.0.1
├─ postcss-colormin@4.0.3
├─ postcss-convert-values@4.0.1
├─ postcss-custom-media@7.0.8
├─ postcss-custom-properties@8.0.11
├─ postcss-custom-selectors@5.1.2
├─ postcss-dir-pseudo-class@5.0.0
├─ postcss-discard-comments@4.0.2
├─ postcss-discard-duplicates@4.0.2
├─ postcss-discard-empty@4.0.1
├─ postcss-discard-overridden@4.0.1
├─ postcss-double-position-gradients@1.0.0
├─ postcss-env-function@2.0.2
├─ postcss-flexbugs-fixes@4.1.0
├─ postcss-focus-visible@4.0.0
├─ postcss-focus-within@3.0.0
├─ postcss-font-variant@4.0.0
├─ postcss-gap-properties@2.0.0
├─ postcss-image-set-function@3.0.1
├─ postcss-initial@3.0.2
├─ postcss-lab-function@2.0.1
├─ postcss-load-config@2.1.0
├─ postcss-loader@3.0.0
├─ postcss-logical@3.0.0
├─ postcss-media-minmax@4.0.0
├─ postcss-merge-longhand@4.0.11
├─ postcss-merge-rules@4.0.3
├─ postcss-minify-font-values@4.0.2
├─ postcss-minify-gradients@4.0.2
├─ postcss-minify-params@4.0.2
├─ postcss-minify-selectors@4.0.2
├─ postcss-modules-extract-imports@2.0.0
├─ postcss-modules-local-by-default@3.0.2
├─ postcss-modules-scope@2.1.1
├─ postcss-modules-values@3.0.0
├─ postcss-nesting@7.0.1
├─ postcss-normalize-charset@4.0.1
├─ postcss-normalize-display-values@4.0.2
├─ postcss-normalize-positions@4.0.2
├─ postcss-normalize-repeat-style@4.0.2
├─ postcss-normalize-string@4.0.2
├─ postcss-normalize-timing-functions@4.0.2
├─ postcss-normalize-unicode@4.0.1
├─ postcss-normalize-url@4.0.1
├─ postcss-normalize-whitespace@4.0.2
├─ postcss-normalize@8.0.1
├─ postcss-ordered-values@4.1.2
├─ postcss-overflow-shorthand@2.0.0
├─ postcss-page-break@2.0.0
├─ postcss-place@4.0.1
├─ postcss-preset-env@6.7.0
├─ postcss-pseudo-class-any-link@6.0.0
├─ postcss-reduce-initial@4.0.3
├─ postcss-reduce-transforms@4.0.2
├─ postcss-replace-overflow-wrap@3.0.0
├─ postcss-safe-parser@4.0.1
├─ postcss-selector-matches@4.0.0
├─ postcss-selector-not@4.0.0
├─ postcss-svgo@4.0.2
├─ postcss-unique-selectors@4.0.1
├─ prepend-http@1.0.4
├─ pretty-bytes@5.3.0
├─ pretty-error@2.1.1
├─ private@0.1.8
├─ process-nextick-args@2.0.1
├─ process@0.11.10
├─ progress@2.0.3
├─ promise@8.0.3
├─ prompts@2.3.0
├─ prop-types@15.7.2
├─ proxy-addr@2.0.5
├─ prr@1.0.1
├─ psl@1.6.0
├─ public-encrypt@4.0.3
├─ pumpify@1.5.1
├─ q@1.5.1
├─ query-string@4.3.4
├─ querystring-es3@0.2.1
├─ querystring@0.2.0
├─ querystringify@2.1.1
├─ raf@3.4.1
├─ randomfill@1.0.4
├─ raw-body@2.4.0
├─ react-app-polyfill@1.0.5
├─ react-dev-utils@10.0.0
├─ react-dom@16.12.0
├─ react-error-overlay@6.0.4
├─ react-is@16.12.0
├─ react-scripts@3.3.0
├─ react@16.12.0
├─ read-pkg-up@2.0.0
├─ read-pkg@2.0.0
├─ readable-stream@2.3.6
├─ readdirp@2.2.1
├─ recursive-readdir@2.2.2
├─ regenerate-unicode-properties@8.1.0
├─ regenerator-transform@0.14.1
├─ regex-parser@2.2.10
├─ regexp.prototype.flags@1.2.0
├─ regexpp@2.0.1
├─ regexpu-core@4.6.0
├─ regjsgen@0.5.1
├─ regjsparser@0.6.0
├─ relateurl@0.2.7
├─ remove-trailing-separator@1.1.0
├─ renderkid@2.0.3
├─ repeat-element@1.1.3
├─ request-promise-core@1.1.3
├─ request@2.88.0
├─ resolve-cwd@2.0.0
├─ resolve-url-loader@3.1.1
├─ resolve-url@0.2.1
├─ resolve@1.13.1
├─ restore-cursor@2.0.0
├─ ret@0.1.15
├─ retry@0.12.0
├─ rework-visit@1.0.0
├─ rework@1.0.1
├─ rgb-regex@1.0.1
├─ rgba-regex@1.0.0
├─ rsvp@4.8.5
├─ run-queue@1.0.3
├─ safer-buffer@2.1.2
├─ sane@4.1.0
├─ sanitize.css@10.0.0
├─ sass-loader@8.0.0
├─ sax@1.2.4
├─ saxes@3.1.11
├─ scheduler@0.18.0
├─ select-hose@2.0.0
├─ selfsigned@1.10.7
├─ serialize-javascript@2.1.1
├─ serve-index@1.9.1
├─ serve-static@1.14.1
├─ set-blocking@2.0.0
├─ set-value@2.0.1
├─ setimmediate@1.0.5
├─ shallow-clone@3.0.1
├─ shebang-command@1.2.0
├─ shebang-regex@1.0.0
├─ shell-quote@1.7.2
├─ shellwords@0.1.1
├─ signal-exit@3.0.2
├─ simple-swizzle@0.2.2
├─ sisteransi@1.0.4
├─ slice-ansi@2.1.0
├─ snapdragon-node@2.1.1
├─ snapdragon-util@3.0.1
├─ sockjs-client@1.4.0
├─ sockjs@0.3.19
├─ sort-keys@1.1.2
├─ source-list-map@2.0.1
├─ source-map-resolve@0.5.2
├─ source-map-support@0.5.16
├─ source-map-url@0.4.0
├─ spdx-correct@3.1.0
├─ spdx-exceptions@2.2.0
├─ spdy-transport@3.0.0
├─ spdy@4.0.1
├─ split-string@3.1.0
├─ sprintf-js@1.0.3
├─ sshpk@1.16.1
├─ ssri@7.1.0
├─ stable@0.1.8
├─ stack-utils@1.0.2
├─ static-extend@0.1.2
├─ stealthy-require@1.1.1
├─ stream-browserify@2.0.2
├─ stream-each@1.2.3
├─ stream-http@2.8.3
├─ strict-uri-encode@1.1.0
├─ string_decoder@1.3.0
├─ string-width@2.1.1
├─ string.prototype.trimleft@2.1.0
├─ string.prototype.trimright@2.1.0
├─ stringify-object@3.3.0
├─ strip-comments@1.0.2
├─ strip-eof@1.0.0
├─ strip-json-comments@3.0.1
├─ style-loader@1.0.0
├─ stylehacks@4.0.3
├─ svg-parser@2.0.2
├─ svgo@1.3.2
├─ table@5.4.6
├─ terser-webpack-plugin@2.2.1
├─ terser@4.4.2
├─ test-exclude@5.2.3
├─ text-table@0.2.0
├─ through2@2.0.5
├─ thunky@1.1.0
├─ timers-browserify@2.0.11
├─ timsort@0.3.0
├─ tmp@0.0.33
├─ tmpl@1.0.4
├─ to-arraybuffer@1.0.1
├─ to-fast-properties@2.0.0
├─ to-object-path@0.3.0
├─ to-regex-range@2.1.1
├─ tough-cookie@2.5.0
├─ ts-pnp@1.1.5
├─ tty-browserify@0.0.0
├─ tunnel-agent@0.6.0
├─ tweetnacl@0.14.5
├─ type-is@1.6.18
├─ type@1.2.0
├─ typedarray@0.0.6
├─ uglify-js@3.4.10
├─ unicode-canonical-property-names-ecmascript@1.0.4
├─ unicode-match-property-ecmascript@1.0.4
├─ unicode-match-property-value-ecmascript@1.1.0
├─ unicode-property-aliases-ecmascript@1.0.5
├─ union-value@1.0.1
├─ unique-slug@2.0.2
├─ unpipe@1.0.0
├─ unquote@1.1.1
├─ unset-value@1.0.0
├─ upath@1.2.0
├─ upper-case@1.1.3
├─ uri-js@4.2.2
├─ url-loader@2.3.0
├─ use@3.1.1
├─ util-deprecate@1.0.2
├─ util.promisify@1.0.0
├─ utils-merge@1.0.1
├─ v8-compile-cache@2.1.0
├─ validate-npm-package-license@3.0.4
├─ vendors@1.0.3
├─ verror@1.10.0
├─ vm-browserify@1.1.2
├─ w3c-xmlserializer@1.1.2
├─ walker@1.0.7
├─ watchpack@1.6.0
├─ wbuf@1.7.3
├─ webpack-dev-middleware@3.7.2
├─ webpack-dev-server@3.9.0
├─ webpack-manifest-plugin@2.2.0
├─ webpack@4.41.2
├─ websocket-extensions@0.1.3
├─ whatwg-encoding@1.0.5
├─ whatwg-fetch@3.0.0
├─ whatwg-mimetype@2.3.0
├─ which@1.3.1
├─ word-wrap@1.2.3
├─ wordwrap@0.0.3
├─ workbox-broadcast-update@4.3.1
├─ workbox-build@4.3.1
├─ workbox-cacheable-response@4.3.1
├─ workbox-expiration@4.3.1
├─ workbox-google-analytics@4.3.1
├─ workbox-navigation-preload@4.3.1
├─ workbox-precaching@4.3.1
├─ workbox-range-requests@4.3.1
├─ workbox-streams@4.3.1
├─ workbox-sw@4.3.1
├─ workbox-webpack-plugin@4.3.1
├─ workbox-window@4.3.1
├─ worker-farm@1.7.0
├─ worker-rpc@0.1.1
├─ wrap-ansi@5.1.0
├─ write-file-atomic@2.4.1
├─ write@1.0.3
├─ ws@6.2.1
├─ xmlchars@2.2.0
├─ xtend@4.0.2
├─ yallist@3.1.1
├─ yaml@1.7.2
└─ yargs-parser@13.1.1
Done in 184.50s.
C:\src\tmp\cra330\node_modules\react-scripts\scripts\init.js:208
      throw err;
      ^

Error: dest already exists.
    at doRename (C:\src\tmp\cra330\node_modules\fs-extra\lib\move-sync\move-sync.js:25:34)
    at Object.moveSync (C:\src\tmp\cra330\node_modules\fs-extra\lib\move-sync\move-sync.js:17:10)
    at module.exports (C:\src\tmp\cra330\node_modules\react-scripts\scripts\init.js:196:8)
    at [eval]:3:14
    at Script.runInThisContext (vm.js:116:20)
    at Object.runInThisContext (vm.js:306:38)
    at Object.<anonymous> ([eval]-wrapper:9:26)
    at Module._compile (internal/modules/cjs/loader.js:956:30)
    at evalScript (internal/process/execution.js:80:25)
    at internal/main/eval_string.js:23:3

Aborting installation.
  node  has failed.

Deleting generated file... node_modules
Deleting generated file... package.json
Deleting generated file... yarn.lock
Done.

@bmuenzenmeyer
Copy link
Contributor Author

@mrmckeb @iansu @ianschmitz @petetnt hoping this can get looked at again soon - it's an active 3.3.0 bug

@mrmckeb
Copy link
Contributor

mrmckeb commented Dec 18, 2019

@bmuenzenmeyer This issue should be very low impact right now, but I appreciate it needs to be dealt with. @ianschmitz can you take a look at this one?

@mrmckeb mrmckeb modified the milestones: 3.4, 3.3.1 Dec 18, 2019
@mrmckeb mrmckeb merged commit 18e56da into facebook:master Dec 18, 2019
@mrmckeb
Copy link
Contributor

mrmckeb commented Dec 18, 2019

Thanks @bmuenzenmeyer, we'll get this into v3.3.1 - which should be out in the next week or two.

@lock lock bot locked and limited conversation to collaborators Dec 23, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Appending CRA gitignore to existing .gitignore fails due to fs-extra v8
4 participants