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

False positives reported when using yarn instead of npm to install modules #34

Closed
egamma opened this issue Mar 29, 2017 · 26 comments
Closed
Assignees
Labels
bug Issue identified by VS Code Team member as probable bug

Comments

@egamma
Copy link
Member

egamma commented Mar 29, 2017

From @tyrsius on March 1, 2017 23:19

  • VSCode Version: Version 1.10.0 (1.10.0)
  • OS Version: macOS Sierre 10.12 (16A323)

Steps to Reproduce:

  1. Create an empty project with the following package.json file
{
  "name": "vscode-bug",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "engine-handlebars": "^0.8.0",
    "express": "^4.14.0",
    "newrelic": "^1.36.2",
    "node-uuid": "^1.4.7"
  },
  "devDependencies": {
    "autoprefixer-stylus": "^0.11.0",
    "babel-core": "^6.3.21",
    "babel-eslint": "^7.0.0",
    "babel-loader": "^6.2.0",
    "babel-plugin-transform-runtime": "^6.15.0",
    "babel-plugin-webpack-alias": "^2.1.1",
    "babel-preset-es2015": "^6.3.13",
    "babel-preset-react": "^6.3.13",
    "babel-preset-stage-0": "^6.3.13",
    "babel-tape-runner": "^2.0.1",
    "blue-tape": "^1.0.0",
    "chokidar-cli": "^1.2.0",
    "deep-extend": "^0.4.1",
    "immutable": "^3.8.1",
    "json-loader": "^0.5.4",
    "localforage": "^1.4.3",
    "npm-run-all": "^4.0.1",
    "qs": "^6.3.0",
    "raw-loader": "^0.5.1",
    "react": "^15.3.2",
    "react-addons-test-utils": "^15.3.2",
    "react-document-title": "^2.0.2",
    "react-dom": "^15.3.2",
    "react-hot-loader": "^3.0.0-beta.6",
    "react-markdown": "^2.4.2",
    "react-redux": "^4.4.5",
    "react-router": "^2.8.1",
    "react-router-redux": "^4.0.6",
    "redbox-react": "^1.3.2",
    "redux": "^3.6.0",
    "redux-thunk": "^2.1.0",
    "skin-deep": "^0.16.0",
    "snazzy": "^5.0.0",
    "source-map-loader": "^0.1.5",
    "standard": "^8.4.0",
    "stylus": "^0.54.5",
    "tap-spec": "^4.1.1",
    "url-join": "^1.1.0",
    "webpack": "^1.11.0",
    "webpack-dev-server": "^1.10.1"
  },
  "author": "",
  "license": "ISC"
}
  1. run npm install
  2. You will see the following problems listed for dependencies

[npm] Module 'https-proxy-agent' is extraneous
[npm] Module 'node-pre-gyp' is extraneous
[npm] Module 'readable-stream' is extraneous

These packages are not dependencies of the package, and this error should not show.

Copied from original issue: microsoft/vscode#21666

@egamma egamma self-assigned this Mar 29, 2017
@egamma egamma added the info-needed Issue requires more information from poster label Mar 29, 2017
@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

From @banyudu on March 22, 2017 3:24

I have this issue, too.

Message

[npm] Module 'https-proxy-agent' is extraneous

was generated by the extension 'npm'.

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

From @ttraenkler on March 24, 2017 15:1

Visual Studio Code 1.10.2 on latest macOS Sierra 10.12.3
warning for "dependencies" in package.json: 'Module 'node-pre-gyp' is extraneous'
Here a list of the extensions installed:
bildschirmfoto 2017-03-24 um 15 56 09
bildschirmfoto 2017-03-24 um 15 56 20

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

From @sandy081 on March 27, 2017 6:51

These problems are generated from the extension npm. Please file issue against that extension.

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

From @sandy081 on March 27, 2017 15:31

@tyrsius Ca you please provide the screenshot of the problems you are seeing in the problems panel?

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

@tyrsius @ttraenkler @banyudu this warning is correct and indicates that you have a module in your node_modules folder that isn't listed in the package.json. This can happen when it was installed without the --save or --savedev options.

Why is this bad? When the folder is shared through an SCM system and the node_modules are not checked in, then your team mate cannot just run npm install to have the same modules installed as you have.

The fix is to add these modules as devDependencies in your package.json file.

@tyrsius the warning will no appear when you follow your steps and do an npm install in a fresh folder.

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

From @tyrsius on March 28, 2017 15:23

@egamma If I follow the steps I posted in my initial post, in a new folder with a fresh npm install, I get this warning. I am sorry, but this warning is not correct.

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

From @ttraenkler on March 28, 2017 15:27

@egamma I am using "yarn add" to add dependencies, not "npm install", which "adds" the --save parameter implicitly.

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

From @tyrsius on March 28, 2017 15:41

The install process is too long to capture in a gif. However, as you can see from this screenshot of the terminal, the only thing in this folder before I ran yarn was the package.json file, no node_modules folder. After installing, you can see the problems for extraneous packages.

vs code bug

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

From @banyudu on March 29, 2017 1:44

@egamma Yes, it works with npm. But if someone use yarn or cnpm instead of npm, things are different.

npm install --save-dev eslint should create only one directory named 'eslint' under node_modules, while yarn add eslint and cnpm install --save-dev eslint will create lots of directories(or symbolic links) under node_modules.

These directories(or symbolic links) will trigger the extraneous warn.

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

I followed the steps and didn't get the warning. Not clear what the difference between yours and my setup is.

This warning actually comes from npm and is derived from the output of npm ls --depth 0 --json. Can you run this command from the command line in the root of the workspace and include the output.

@banyudu
Copy link

banyudu commented Mar 29, 2017

/tmp/test $ rm -r *
/tmp/test $ ls
/tmp/test $ yarn add eslint
yarn add v0.21.3
info No lockfile found.
[1/4] 🔍 Resolving packages...
[2/4] 🚚 Fetching packages...
[3/4] 🔗 Linking dependencies...
[4/4] 📃 Building fresh packages...
success Saved lockfile.
success Saved 134 new dependencies.
├─ acorn-jsx@3.0.1
├─ acorn@4.0.4
├─ ajv-keywords@1.5.1
├─ ajv@4.11.5
├─ ansi-escapes@1.4.0
├─ ansi-regex@2.1.1
├─ ansi-styles@2.2.1
├─ argparse@1.0.9
├─ array-union@1.0.2
├─ array-uniq@1.0.3
├─ arrify@1.0.1
├─ babel-code-frame@6.22.0
├─ balanced-match@0.4.2
├─ brace-expansion@1.1.6
├─ buffer-shims@1.0.0
├─ caller-path@0.1.0
├─ callsites@0.2.0
├─ chalk@1.1.3
├─ circular-json@0.3.1
├─ cli-cursor@1.0.2
├─ cli-width@2.1.0
├─ co@4.6.0
├─ code-point-at@1.1.0
├─ concat-map@0.0.1
├─ concat-stream@1.6.0
├─ core-util-is@1.0.2
├─ d@1.0.0
├─ debug@2.6.3
├─ deep-is@0.1.3
├─ del@2.2.2
├─ doctrine@2.0.0
├─ es5-ext@0.10.15
├─ es6-iterator@2.0.1
├─ es6-map@0.1.5
├─ es6-set@0.1.5
├─ es6-symbol@3.1.1
├─ es6-weak-map@2.0.2
├─ escape-string-regexp@1.0.5
├─ escope@3.6.0
├─ eslint@3.18.0
├─ espree@3.4.0
├─ esprima@3.1.3
├─ esquery@1.0.0
├─ esrecurse@4.1.0
├─ estraverse@4.2.0
├─ esutils@2.0.2
├─ event-emitter@0.3.5
├─ exit-hook@1.1.1
├─ fast-levenshtein@2.0.6
├─ figures@1.7.0
├─ file-entry-cache@2.0.0
├─ flat-cache@1.2.2
├─ fs.realpath@1.0.0
├─ generate-function@2.0.0
├─ generate-object-property@1.2.0
├─ glob@7.1.1
├─ globals@9.17.0
├─ globby@5.0.0
├─ graceful-fs@4.1.11
├─ has-ansi@2.0.0
├─ ignore@3.2.6
├─ imurmurhash@0.1.4
├─ inflight@1.0.6
├─ inherits@2.0.3
├─ inquirer@0.12.0
├─ interpret@1.0.1
├─ is-fullwidth-code-point@1.0.0
├─ is-my-json-valid@2.16.0
├─ is-path-cwd@1.0.0
├─ is-path-in-cwd@1.0.0
├─ is-path-inside@1.0.0
├─ is-property@1.0.2
├─ is-resolvable@1.0.0
├─ isarray@1.0.0
├─ js-tokens@3.0.1
├─ js-yaml@3.8.2
├─ json-stable-stringify@1.0.1
├─ jsonify@0.0.0
├─ jsonpointer@4.0.1
├─ levn@0.3.0
├─ lodash@4.17.4
├─ minimatch@3.0.3
├─ minimist@0.0.8
├─ mkdirp@0.5.1
├─ ms@0.7.2
├─ mute-stream@0.0.5
├─ natural-compare@1.4.0
├─ number-is-nan@1.0.1
├─ object-assign@4.1.1
├─ once@1.4.0
├─ onetime@1.1.0
├─ optionator@0.8.2
├─ os-homedir@1.0.2
├─ path-is-absolute@1.0.1
├─ path-is-inside@1.0.2
├─ path-parse@1.0.5
├─ pify@2.3.0
├─ pinkie-promise@2.0.1
├─ pinkie@2.0.4
├─ pluralize@1.2.1
├─ prelude-ls@1.1.2
├─ process-nextick-args@1.0.7
├─ progress@1.1.8
├─ readable-stream@2.2.6
├─ readline2@1.0.1
├─ rechoir@0.6.2
├─ require-uncached@1.0.3
├─ resolve-from@1.0.1
├─ resolve@1.3.2
├─ restore-cursor@1.0.1
├─ rimraf@2.6.1
├─ run-async@0.1.0
├─ rx-lite@3.1.2
├─ shelljs@0.7.7
├─ slice-ansi@0.0.4
├─ sprintf-js@1.0.3
├─ string_decoder@0.10.31
├─ string-width@1.0.2
├─ strip-ansi@3.0.1
├─ strip-bom@3.0.0
├─ strip-json-comments@2.0.1
├─ supports-color@2.0.0
├─ table@3.8.3
├─ text-table@0.2.0
├─ through@2.3.8
├─ tryit@1.0.3
├─ type-check@0.3.2
├─ typedarray@0.0.6
├─ user-home@2.0.0
├─ util-deprecate@1.0.2
├─ wordwrap@1.0.0
├─ wrappy@1.0.2
├─ write@0.2.1
└─ xtend@4.0.1
✨ Done in 16.43s.
/tmp/test $ npm ls --depth 0 --json.
@ /private/tmp/test
├── acorn@4.0.4
├── acorn-jsx@3.0.1
├── ajv@4.11.5
├── ajv-keywords@1.5.1
├── ansi-escapes@1.4.0
├── ansi-regex@2.1.1
├── ansi-styles@2.2.1
├── argparse@1.0.9
├── array-union@1.0.2
├── array-uniq@1.0.3
├── arrify@1.0.1
├── babel-code-frame@6.22.0
├── balanced-match@0.4.2
├── brace-expansion@1.1.6
├── buffer-shims@1.0.0
├── caller-path@0.1.0
├── callsites@0.2.0
├── chalk@1.1.3
├── circular-json@0.3.1
├── cli-cursor@1.0.2
├── cli-width@2.1.0
├── co@4.6.0
├── code-point-at@1.1.0
├── concat-map@0.0.1
├── concat-stream@1.6.0
├── core-util-is@1.0.2
├── d@1.0.0
├── debug@2.6.3
├── deep-is@0.1.3
├── del@2.2.2
├── doctrine@2.0.0
├── es5-ext@0.10.15
├── es6-iterator@2.0.1
├── es6-map@0.1.5
├── es6-set@0.1.5
├── es6-symbol@3.1.1
├── es6-weak-map@2.0.2
├── escape-string-regexp@1.0.5
├── escope@3.6.0
├── eslint@3.18.0
├── espree@3.4.0
├── esprima@3.1.3
├── esquery@1.0.0
├── esrecurse@4.1.0
├── estraverse@4.2.0
├── esutils@2.0.2
├── event-emitter@0.3.5
├── exit-hook@1.1.1
├── fast-levenshtein@2.0.6
├── figures@1.7.0
├── file-entry-cache@2.0.0
├── flat-cache@1.2.2
├── fs.realpath@1.0.0
├── generate-function@2.0.0
├── generate-object-property@1.2.0
├── glob@7.1.1
├── globals@9.17.0
├── globby@5.0.0
├── graceful-fs@4.1.11
├── has-ansi@2.0.0
├── ignore@3.2.6
├── imurmurhash@0.1.4
├── inflight@1.0.6
├── inherits@2.0.3
├── inquirer@0.12.0
├── interpret@1.0.1
├── is-fullwidth-code-point@1.0.0
├── is-my-json-valid@2.16.0
├── is-path-cwd@1.0.0
├── is-path-in-cwd@1.0.0
├── is-path-inside@1.0.0
├── is-property@1.0.2
├── is-resolvable@1.0.0
├── isarray@1.0.0
├── js-tokens@3.0.1
├── js-yaml@3.8.2
├── json-stable-stringify@1.0.1
├── jsonify@0.0.0
├── jsonpointer@4.0.1
├── levn@0.3.0
├── lodash@4.17.4
├── minimatch@3.0.3
├── minimist@0.0.8
├── mkdirp@0.5.1
├── ms@0.7.2
├── mute-stream@0.0.5
├── natural-compare@1.4.0
├── number-is-nan@1.0.1
├── object-assign@4.1.1
├── once@1.4.0
├── onetime@1.1.0
├── optionator@0.8.2
├── os-homedir@1.0.2
├── path-is-absolute@1.0.1
├── path-is-inside@1.0.2
├── path-parse@1.0.5
├── pify@2.3.0
├── pinkie@2.0.4
├── pinkie-promise@2.0.1
├── pluralize@1.2.1
├── prelude-ls@1.1.2
├── process-nextick-args@1.0.7
├── progress@1.1.8
├── readable-stream@2.2.6
├── readline2@1.0.1
├── rechoir@0.6.2
├── require-uncached@1.0.3
├── resolve@1.3.2
├── resolve-from@1.0.1
├── restore-cursor@1.0.1
├── rimraf@2.6.1
├── run-async@0.1.0
├── rx-lite@3.1.2
├── shelljs@0.7.7
├── slice-ansi@0.0.4
├── sprintf-js@1.0.3
├── string-width@1.0.2
├── string_decoder@0.10.31
├── strip-ansi@3.0.1
├── strip-bom@3.0.0
├── strip-json-comments@2.0.1
├── supports-color@2.0.0
├── table@3.8.3
├── text-table@0.2.0
├── through@2.3.8
├── tryit@1.0.3
├── type-check@0.3.2
├── typedarray@0.0.6
├── user-home@2.0.0
├── util-deprecate@1.0.2
├── wordwrap@1.0.0
├── wrappy@1.0.2
├── write@0.2.1
└── xtend@4.0.1

/tmp/test $

Environment:
yarn 0.21.3
macOS Sierra 10.12.3
node: v4.8.0
npm: v2.15.11

@ttraenkler
Copy link

ttraenkler commented Mar 29, 2017

You should be able to reproduce this issue with the popular create-react-app tool from Facebook that bootstraps a preconfigured standard React app. I cannot tell if this is an issue related to Visual Studio Code, NPM, or this tool, but from the other comments it seems it pops up elsewhere as well.

dust:test thomas$ npm ls --depth 0 --json.
test@0.1.0 /Users/thomas/Desktop/test
├── node-pre-gyp@0.6.34 extraneous
├── react@15.4.2
├── react-dom@15.4.2
└── react-scripts@0.9.5

npm ERR! extraneous: node-pre-gyp@0.6.34 /Users/thomas/Desktop/test/node_modules/node-pre-gyp

bildschirmfoto 2017-03-29 um 08 52 42

The steps I used to produce the project

thomas$ create-react-app --version
1.0.4
thomas$ create-react-app test
Creating a new React app in /Users/thomas/Desktop/test.

Installing packages. This might take a couple minutes.
Installing react-scripts...

yarn add v0.21.3
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning "babel-loader@6.2.10" has unmet peer dependency "babel-core@^6.0.0".
warning "babel-loader@6.2.10" has unmet peer dependency "webpack@1 || 2 || ^2.1.0-beta || ^2.2.0-rc".
warning "eslint-config-react-app@0.6.2" has unmet peer dependency "babel-eslint@^7.0.0".
warning "eslint-config-react-app@0.6.2" has unmet peer dependency "eslint@^3.16.1".
warning "eslint-config-react-app@0.6.2" has unmet peer dependency "eslint-plugin-flowtype@^2.21.0".
warning "eslint-config-react-app@0.6.2" has unmet peer dependency "eslint-plugin-import@^2.0.1".
warning "eslint-config-react-app@0.6.2" has unmet peer dependency "eslint-plugin-jsx-a11y@^2.0.0 || ^3.0.0 || ^4.0.0".
warning "eslint-config-react-app@0.6.2" has unmet peer dependency "eslint-plugin-react@^6.4.1".
warning "eslint-loader@1.6.0" has unmet peer dependency "eslint@>=1.6.0 <4.0.0".
warning "extract-text-webpack-plugin@1.0.1" has unmet peer dependency "webpack@^1.9.11".
warning "eslint-plugin-jsx-a11y@4.0.0" has unmet peer dependency "eslint@^2.10.2 || 3.x".
warning "eslint-plugin-import@2.0.1" has unmet peer dependency "eslint@2.x - 3.x".
warning "eslint-plugin-flowtype@2.21.0" has unmet peer dependency "eslint@>=2.0.0".
warning "eslint-plugin-react@6.4.1" has unmet peer dependency "eslint@^2.0.0 || ^3.0.0".
warning "html-webpack-plugin@2.24.0" has unmet peer dependency "webpack@1 || ^2.1.0-beta".
warning "url-loader@0.5.7" has unmet peer dependency "file-loader@*".
warning "webpack-dev-server@1.16.2" has unmet peer dependency "webpack@>=1.3.0 <3".
warning "webpack-dev-middleware@1.10.1" has unmet peer dependency "webpack@1 || ^2.1.0-beta || ^2.2.0-rc.0".
[4/4] 📃  Building fresh packages...
success Saved lockfile.
success Saved 758 new dependencies.
├─ abab@1.0.3
├─ abbrev@1.1.0
├─ accepts@1.3.3
├─ acorn-globals@3.1.0
├─ acorn-jsx@3.0.1
├─ acorn@4.0.4
├─ ajv-keywords@1.5.1
├─ ajv@4.11.5
├─ align-text@0.1.4
├─ alphanum-sort@1.0.2
├─ amdefine@1.0.1
├─ ansi-escapes@1.4.0
├─ ansi-html@0.0.5
├─ ansi-regex@2.1.1
├─ ansi-styles@2.2.1
├─ ansicolors@0.2.1
├─ anymatch@1.3.0
├─ append-transform@0.4.0
├─ aproba@1.1.1
├─ are-we-there-yet@1.1.2
├─ argparse@1.0.9
├─ aria-query@0.3.0
├─ arr-diff@2.0.0
├─ arr-flatten@1.0.1
├─ array-equal@1.0.0
├─ array-flatten@1.1.1
├─ array-union@1.0.2
├─ array-uniq@1.0.3
├─ array-unique@0.2.1
├─ arrify@1.0.1
├─ asap@2.0.5
├─ asn1@0.2.3
├─ assert-plus@1.0.0
├─ assert@1.4.1
├─ ast-types-flow@0.0.7
├─ async-each@1.0.1
├─ async@1.5.2
├─ asynckit@0.4.0
├─ autoprefixer@6.7.2
├─ aws-sign2@0.6.0
├─ aws4@1.6.0
├─ babel-code-frame@6.22.0
├─ babel-core@6.22.1
├─ babel-eslint@7.1.1
├─ babel-generator@6.24.0
├─ babel-helper-builder-binary-assignment-operator-visitor@6.22.0
├─ babel-helper-builder-react-jsx@6.23.0
├─ babel-helper-call-delegate@6.22.0
├─ babel-helper-define-map@6.23.0
├─ babel-helper-explode-assignable-expression@6.22.0
├─ babel-helper-function-name@6.23.0
├─ babel-helper-get-function-arity@6.22.0
├─ babel-helper-hoist-variables@6.22.0
├─ babel-helper-optimise-call-expression@6.23.0
├─ babel-helper-regex@6.22.0
├─ babel-helper-remap-async-to-generator@6.22.0
├─ babel-helper-replace-supers@6.23.0
├─ babel-helpers@6.23.0
├─ babel-jest@18.0.0
├─ babel-loader@6.2.10
├─ babel-messages@6.23.0
├─ babel-plugin-check-es2015-constants@6.22.0
├─ babel-plugin-istanbul@3.1.2
├─ babel-plugin-jest-hoist@18.0.0
├─ babel-plugin-syntax-async-functions@6.13.0
├─ babel-plugin-syntax-class-properties@6.13.0
├─ babel-plugin-syntax-exponentiation-operator@6.13.0
├─ babel-plugin-syntax-flow@6.18.0
├─ babel-plugin-syntax-jsx@6.18.0
├─ babel-plugin-syntax-object-rest-spread@6.13.0
├─ babel-plugin-syntax-trailing-function-commas@6.22.0
├─ babel-plugin-transform-async-to-generator@6.22.0
├─ babel-plugin-transform-class-properties@6.22.0
├─ babel-plugin-transform-es2015-arrow-functions@6.22.0
├─ babel-plugin-transform-es2015-block-scoped-functions@6.22.0
├─ babel-plugin-transform-es2015-block-scoping@6.23.0
├─ babel-plugin-transform-es2015-classes@6.23.0
├─ babel-plugin-transform-es2015-computed-properties@6.22.0
├─ babel-plugin-transform-es2015-destructuring@6.23.0
├─ babel-plugin-transform-es2015-duplicate-keys@6.22.0
├─ babel-plugin-transform-es2015-for-of@6.23.0
├─ babel-plugin-transform-es2015-function-name@6.22.0
├─ babel-plugin-transform-es2015-literals@6.22.0
├─ babel-plugin-transform-es2015-modules-amd@6.24.0
├─ babel-plugin-transform-es2015-modules-commonjs@6.24.0
├─ babel-plugin-transform-es2015-modules-systemjs@6.23.0
├─ babel-plugin-transform-es2015-modules-umd@6.24.0
├─ babel-plugin-transform-es2015-object-super@6.22.0
├─ babel-plugin-transform-es2015-parameters@6.23.0
├─ babel-plugin-transform-es2015-shorthand-properties@6.22.0
├─ babel-plugin-transform-es2015-spread@6.22.0
├─ babel-plugin-transform-es2015-sticky-regex@6.22.0
├─ babel-plugin-transform-es2015-template-literals@6.22.0
├─ babel-plugin-transform-es2015-typeof-symbol@6.23.0
├─ babel-plugin-transform-es2015-unicode-regex@6.22.0
├─ babel-plugin-transform-exponentiation-operator@6.22.0
├─ babel-plugin-transform-flow-strip-types@6.22.0
├─ babel-plugin-transform-object-rest-spread@6.22.0
├─ babel-plugin-transform-react-constant-elements@6.22.0
├─ babel-plugin-transform-react-display-name@6.23.0
├─ babel-plugin-transform-react-jsx-self@6.22.0
├─ babel-plugin-transform-react-jsx-source@6.22.0
├─ babel-plugin-transform-react-jsx@6.22.0
├─ babel-plugin-transform-regenerator@6.22.0
├─ babel-plugin-transform-runtime@6.22.0
├─ babel-plugin-transform-strict-mode@6.22.0
├─ babel-preset-env@1.2.1
├─ babel-preset-jest@18.0.0
├─ babel-preset-react-app@2.2.0
├─ babel-preset-react@6.22.0
├─ babel-register@6.24.0
├─ babel-runtime@6.23.0
├─ babel-template@6.23.0
├─ babel-traverse@6.23.1
├─ babel-types@6.23.0
├─ babylon@6.16.1
├─ balanced-match@0.4.2
├─ base64-js@1.2.0
├─ batch@0.5.3
├─ bcrypt-pbkdf@1.0.1
├─ big.js@3.1.3
├─ binary-extensions@1.8.0
├─ block-stream@0.0.9
├─ bluebird@3.5.0
├─ boolbase@1.0.0
├─ boom@2.10.1
├─ brace-expansion@1.1.6
├─ braces@1.8.5
├─ browser-resolve@1.11.2
├─ browserify-aes@0.4.0
├─ browserify-zlib@0.1.4
├─ browserslist@1.7.7
├─ bser@1.0.2
├─ buffer-shims@1.0.0
├─ buffer@4.9.1
├─ builtin-modules@1.1.1
├─ builtin-status-codes@3.0.0
├─ bytes@2.3.0
├─ caller-path@0.1.0
├─ callsites@2.0.0
├─ camel-case@3.0.0
├─ camelcase@3.0.0
├─ caniuse-api@1.5.3
├─ caniuse-db@1.0.30000646
├─ cardinal@1.0.0
├─ case-sensitive-paths-webpack-plugin@1.1.4
├─ caseless@0.12.0
├─ center-align@0.1.3
├─ chalk@1.1.3
├─ chokidar@1.6.1
├─ ci-info@1.0.0
├─ circular-json@0.3.1
├─ clap@1.1.3
├─ clean-css@4.0.10
├─ cli-cursor@1.0.2
├─ cli-table@0.3.1
├─ cli-usage@0.1.4
├─ cli-width@2.1.0
├─ cliui@2.1.0
├─ clone@1.0.2
├─ co@4.6.0
├─ coa@1.0.1
├─ code-point-at@1.1.0
├─ color-convert@1.9.0
├─ color-name@1.1.2
├─ color-string@0.3.0
├─ color@0.11.4
├─ colormin@1.1.2
├─ colors@1.1.2
├─ combined-stream@1.0.5
├─ commander@2.9.0
├─ commondir@1.0.1
├─ compressible@2.0.10
├─ compression@1.6.2
├─ concat-map@0.0.1
├─ concat-stream@1.6.0
├─ connect-history-api-fallback@1.3.0
├─ console-browserify@1.1.0
├─ console-control-strings@1.1.0
├─ constants-browserify@1.0.0
├─ contains-path@0.1.0
├─ content-disposition@0.5.2
├─ content-type-parser@1.0.1
├─ content-type@1.0.2
├─ convert-source-map@1.5.0
├─ cookie-signature@1.0.6
├─ cookie@0.3.1
├─ core-js@2.4.1
├─ core-util-is@1.0.2
├─ cosmiconfig@2.1.1
├─ cross-spawn@4.0.2
├─ cryptiles@2.0.5
├─ crypto-browserify@3.3.0
├─ css-color-names@0.0.4
├─ css-loader@0.26.1
├─ css-select@1.2.0
├─ css-selector-tokenizer@0.6.0
├─ css-what@2.1.0
├─ cssesc@0.1.0
├─ cssnano@3.10.0
├─ csso@2.3.2
├─ cssom@0.3.2
├─ cssstyle@0.2.37
├─ d@1.0.0
├─ damerau-levenshtein@1.0.4
├─ dashdash@1.14.1
├─ date-now@0.1.4
├─ debug@2.6.3
├─ decamelize@1.2.0
├─ deep-extend@0.4.1
├─ deep-is@0.1.3
├─ default-require-extensions@1.0.0
├─ defined@1.0.0
├─ del@2.2.2
├─ delayed-stream@1.0.0
├─ delegates@1.0.0
├─ depd@1.1.0
├─ destroy@1.0.4
├─ detect-indent@4.0.0
├─ detect-port@1.1.0
├─ diff@3.2.0
├─ doctrine@1.3.0
├─ dom-converter@0.1.4
├─ dom-serializer@0.1.0
├─ domain-browser@1.1.7
├─ domelementtype@1.3.0
├─ domhandler@2.1.0
├─ domutils@1.1.6
├─ dotenv@2.0.0
├─ duplexer@0.1.1
├─ ecc-jsbn@0.1.1
├─ ee-first@1.1.1
├─ electron-to-chromium@1.3.2
├─ emoji-regex@6.4.1
├─ emojis-list@2.1.0
├─ encodeurl@1.0.1
├─ enhanced-resolve@0.9.1
├─ entities@1.1.1
├─ errno@0.1.4
├─ error-ex@1.3.1
├─ es5-ext@0.10.15
├─ es6-iterator@2.0.1
├─ es6-map@0.1.5
├─ es6-set@0.1.5
├─ es6-symbol@3.1.1
├─ es6-weak-map@2.0.2
├─ escape-html@1.0.3
├─ escape-string-regexp@1.0.5
├─ escodegen@1.8.1
├─ escope@3.6.0
├─ eslint-config-react-app@0.6.2
├─ eslint-import-resolver-node@0.2.3
├─ eslint-loader@1.6.0
├─ eslint-module-utils@1.0.0
├─ eslint-plugin-flowtype@2.21.0
├─ eslint-plugin-import@2.0.1
├─ eslint-plugin-jsx-a11y@4.0.0
├─ eslint-plugin-react@6.4.1
├─ eslint@3.16.1
├─ espree@3.4.0
├─ esprima@2.7.3
├─ esrecurse@4.1.0
├─ estraverse@4.2.0
├─ esutils@2.0.2
├─ etag@1.8.0
├─ event-emitter@0.3.5
├─ eventemitter3@1.2.0
├─ events@1.1.1
├─ eventsource@0.1.6
├─ exec-sh@0.2.0
├─ exit-hook@1.1.1
├─ expand-brackets@0.1.5
├─ expand-range@1.8.2
├─ express@4.15.2
├─ extend@3.0.0
├─ extglob@0.3.2
├─ extract-text-webpack-plugin@1.0.1
├─ extsprintf@1.0.2
├─ fast-levenshtein@2.0.6
├─ fastparse@1.1.1
├─ faye-websocket@0.10.0
├─ fb-watchman@1.9.2
├─ figures@1.7.0
├─ file-entry-cache@2.0.0
├─ file-loader@0.10.0
├─ filename-regex@2.0.0
├─ fileset@2.0.3
├─ filesize@3.3.0
├─ fill-range@2.2.3
├─ finalhandler@1.0.1
├─ find-cache-dir@0.1.1
├─ find-up@1.1.2
├─ flat-cache@1.2.2
├─ flatten@1.0.2
├─ for-in@1.0.2
├─ for-own@0.1.5
├─ forever-agent@0.6.1
├─ form-data@2.1.2
├─ forwarded@0.1.0
├─ fresh@0.5.0
├─ fs-extra@0.30.0
├─ fs.realpath@1.0.0
├─ fsevents@1.0.17
├─ fstream-ignore@1.0.5
├─ fstream@1.0.11
├─ function-bind@1.1.0
├─ gauge@2.7.3
├─ generate-function@2.0.0
├─ generate-object-property@1.2.0
├─ get-caller-file@1.0.2
├─ getpass@0.1.6
├─ glob-base@0.3.0
├─ glob-parent@2.0.0
├─ glob@7.1.1
├─ globals@9.17.0
├─ globby@5.0.0
├─ graceful-fs@4.1.11
├─ graceful-readlink@1.0.1
├─ growly@1.3.0
├─ gzip-size@3.0.0
├─ handlebars@4.0.6
├─ har-schema@1.0.5
├─ har-validator@4.2.1
├─ has-ansi@2.0.0
├─ has-flag@1.0.0
├─ has-unicode@2.0.1
├─ has@1.0.1
├─ hawk@3.1.3
├─ he@1.1.1
├─ hoek@2.16.3
├─ home-or-tmp@2.0.0
├─ hosted-git-info@2.4.1
├─ html-comment-regex@1.1.1
├─ html-encoding-sniffer@1.0.1
├─ html-entities@1.2.0
├─ html-minifier@3.4.2
├─ html-webpack-plugin@2.24.0
├─ htmlparser2@3.3.0
├─ http-errors@1.5.1
├─ http-proxy-middleware@0.17.3
├─ http-proxy@1.16.2
├─ http-signature@1.1.1
├─ https-browserify@0.0.1
├─ iconv-lite@0.4.13
├─ icss-replace-symbols@1.0.2
├─ ieee754@1.1.8
├─ ignore@3.2.6
├─ imurmurhash@0.1.4
├─ indexes-of@1.0.1
├─ indexof@0.0.1
├─ inflight@1.0.6
├─ inherits@2.0.3
├─ ini@1.3.4
├─ inquirer@0.12.0
├─ interpret@0.6.6
├─ invariant@2.2.2
├─ invert-kv@1.0.0
├─ ipaddr.js@1.3.0
├─ is-absolute-url@2.1.0
├─ is-arrayish@0.2.1
├─ is-binary-path@1.0.1
├─ is-buffer@1.1.5
├─ is-builtin-module@1.0.0
├─ is-ci@1.0.10
├─ is-dotfile@1.0.2
├─ is-equal-shallow@0.1.3
├─ is-extendable@0.1.1
├─ is-extglob@1.0.0
├─ is-finite@1.0.2
├─ is-fullwidth-code-point@1.0.0
├─ is-glob@2.0.1
├─ is-my-json-valid@2.16.0
├─ is-number@2.1.0
├─ is-path-cwd@1.0.0
├─ is-path-in-cwd@1.0.0
├─ is-path-inside@1.0.0
├─ is-plain-obj@1.1.0
├─ is-posix-bracket@0.1.1
├─ is-primitive@2.0.0
├─ is-property@1.0.2
├─ is-resolvable@1.0.0
├─ is-svg@2.1.0
├─ is-typedarray@1.0.0
├─ is-utf8@0.2.1
├─ isarray@1.0.0
├─ isexe@2.0.0
├─ isobject@2.1.0
├─ isstream@0.1.2
├─ istanbul-api@1.1.7
├─ istanbul-lib-coverage@1.0.2
├─ istanbul-lib-hook@1.0.5
├─ istanbul-lib-instrument@1.7.0
├─ istanbul-lib-report@1.0.0
├─ istanbul-lib-source-maps@1.1.1
├─ istanbul-reports@1.0.2
├─ jest-changed-files@17.0.2
├─ jest-cli@18.1.0
├─ jest-config@18.1.0
├─ jest-diff@18.1.0
├─ jest-environment-jsdom@18.1.0
├─ jest-environment-node@18.1.0
├─ jest-file-exists@17.0.0
├─ jest-haste-map@18.1.0
├─ jest-jasmine2@18.1.0
├─ jest-matcher-utils@18.1.0
├─ jest-matchers@18.1.0
├─ jest-mock@18.0.0
├─ jest-resolve-dependencies@18.1.0
├─ jest-resolve@18.1.0
├─ jest-runtime@18.1.0
├─ jest-snapshot@18.1.0
├─ jest-util@18.1.0
├─ jest@18.1.0
├─ jodid25519@1.0.2
├─ js-base64@2.1.9
├─ js-tokens@3.0.1
├─ js-yaml@3.8.2
├─ jsbn@0.1.1
├─ jsdom@9.12.0
├─ jsesc@1.3.0
├─ json-loader@0.5.4
├─ json-schema@0.2.3
├─ json-stable-stringify@1.0.1
├─ json-stringify-safe@5.0.1
├─ json3@3.3.2
├─ json5@0.5.1
├─ jsonfile@2.4.0
├─ jsonify@0.0.0
├─ jsonpointer@4.0.1
├─ jsprim@1.4.0
├─ jsx-ast-utils@1.4.0
├─ kind-of@3.1.0
├─ klaw@1.3.1
├─ lazy-cache@1.0.4
├─ lcid@1.0.0
├─ levn@0.3.0
├─ load-json-file@1.1.0
├─ loader-utils@0.2.17
├─ lodash._arraycopy@3.0.0
├─ lodash._arrayeach@3.0.0
├─ lodash._baseassign@3.2.0
├─ lodash._baseclone@3.3.0
├─ lodash._basecopy@3.0.1
├─ lodash._basefor@3.0.3
├─ lodash._bindcallback@3.0.1
├─ lodash._getnative@3.9.1
├─ lodash.assign@4.2.0
├─ lodash.camelcase@4.3.0
├─ lodash.clonedeep@3.0.2
├─ lodash.cond@4.5.2
├─ lodash.isarguments@3.1.0
├─ lodash.isarray@3.0.4
├─ lodash.keys@3.1.2
├─ lodash.memoize@4.1.2
├─ lodash.pickby@4.6.0
├─ lodash.uniq@4.5.0
├─ lodash@4.17.4
├─ longest@1.0.1
├─ loose-envify@1.3.1
├─ lower-case@1.1.4
├─ lru-cache@4.0.2
├─ macaddress@0.2.8
├─ makeerror@1.0.11
├─ marked-terminal@1.7.0
├─ marked@0.3.6
├─ math-expression-evaluator@1.2.16
├─ media-typer@0.3.0
├─ memory-fs@0.3.0
├─ merge-descriptors@1.0.1
├─ merge@1.2.0
├─ methods@1.1.2
├─ micromatch@2.3.11
├─ mime-db@1.27.0
├─ mime-types@2.1.15
├─ mime@1.3.4
├─ minimatch@3.0.3
├─ minimist@1.2.0
├─ mkdirp@0.5.1
├─ ms@0.7.2
├─ mute-stream@0.0.5
├─ nan@2.5.1
├─ natural-compare@1.4.0
├─ ncname@1.0.0
├─ negotiator@0.6.1
├─ no-case@2.3.1
├─ node-emoji@1.5.1
├─ node-int64@0.4.0
├─ node-libs-browser@0.7.0
├─ node-notifier@4.6.1
├─ node-pre-gyp@0.6.34
├─ nopt@4.0.1
├─ normalize-package-data@2.3.6
├─ normalize-path@2.0.1
├─ normalize-range@0.1.2
├─ normalize-url@1.9.1
├─ npmlog@4.0.2
├─ nth-check@1.0.1
├─ num2fraction@1.2.2
├─ number-is-nan@1.0.1
├─ nwmatcher@1.3.9
├─ oauth-sign@0.8.2
├─ object-assign@4.1.1
├─ object.omit@2.0.1
├─ on-finished@2.3.0
├─ on-headers@1.0.1
├─ once@1.4.0
├─ onetime@1.1.0
├─ open@0.0.5
├─ opn@4.0.2
├─ optimist@0.6.1
├─ optionator@0.8.2
├─ original@1.0.0
├─ os-browserify@0.2.1
├─ os-homedir@1.0.2
├─ os-locale@1.4.0
├─ os-tmpdir@1.0.2
├─ osenv@0.1.4
├─ pako@0.2.9
├─ param-case@2.1.1
├─ parse-glob@3.0.4
├─ parse-json@2.2.0
├─ parse5@1.5.1
├─ parseurl@1.3.1
├─ path-browserify@0.0.0
├─ path-exists@2.1.0
├─ path-is-absolute@1.0.1
├─ path-is-inside@1.0.2
├─ path-parse@1.0.5
├─ path-to-regexp@0.1.7
├─ path-type@1.1.0
├─ pbkdf2-compat@2.0.1
├─ performance-now@0.2.0
├─ pify@2.3.0
├─ pinkie-promise@2.0.1
├─ pinkie@2.0.4
├─ pkg-dir@1.0.0
├─ pkg-up@1.0.0
├─ pluralize@1.2.1
├─ postcss-calc@5.3.1
├─ postcss-colormin@2.2.2
├─ postcss-convert-values@2.6.1
├─ postcss-discard-comments@2.0.4
├─ postcss-discard-duplicates@2.1.0
├─ postcss-discard-empty@2.1.0
├─ postcss-discard-overridden@0.1.1
├─ postcss-discard-unused@2.2.3
├─ postcss-filter-plugins@2.0.2
├─ postcss-load-config@1.2.0
├─ postcss-load-options@1.2.0
├─ postcss-load-plugins@2.3.0
├─ postcss-loader@1.2.2
├─ postcss-merge-idents@2.1.7
├─ postcss-merge-longhand@2.0.2
├─ postcss-merge-rules@2.1.2
├─ postcss-message-helpers@2.0.0
├─ postcss-minify-font-values@1.0.5
├─ postcss-minify-gradients@1.0.5
├─ postcss-minify-params@1.2.2
├─ postcss-minify-selectors@2.1.1
├─ postcss-modules-extract-imports@1.0.1
├─ postcss-modules-local-by-default@1.1.1
├─ postcss-modules-scope@1.0.2
├─ postcss-modules-values@1.2.2
├─ postcss-normalize-charset@1.1.1
├─ postcss-normalize-url@3.0.8
├─ postcss-ordered-values@2.2.3
├─ postcss-reduce-idents@2.4.0
├─ postcss-reduce-initial@1.0.1
├─ postcss-reduce-transforms@1.0.4
├─ postcss-selector-parser@2.2.3
├─ postcss-svgo@2.1.6
├─ postcss-unique-selectors@2.0.2
├─ postcss-value-parser@3.3.0
├─ postcss-zindex@2.2.0
├─ postcss@5.2.16
├─ prelude-ls@1.1.2
├─ prepend-http@1.0.4
├─ preserve@0.2.0
├─ pretty-error@2.0.3
├─ pretty-format@18.1.0
├─ private@0.1.7
├─ process-nextick-args@1.0.7
├─ process@0.11.9
├─ progress@1.1.8
├─ promise@7.1.1
├─ proxy-addr@1.1.4
├─ prr@0.0.0
├─ pseudomap@1.0.2
├─ punycode@1.4.1
├─ q@1.5.0
├─ qs@6.4.0
├─ query-string@4.3.2
├─ querystring-es3@0.2.1
├─ querystring@0.2.0
├─ querystringify@0.0.4
├─ randomatic@1.1.6
├─ range-parser@1.2.0
├─ rc@1.1.7
├─ react-dev-utils@0.5.2
├─ react-scripts@0.9.5
├─ read-pkg-up@1.0.1
├─ read-pkg@1.1.0
├─ readable-stream@2.2.6
├─ readdirp@2.1.0
├─ readline2@1.0.1
├─ rechoir@0.6.2
├─ recursive-readdir@2.1.1
├─ redeyed@1.0.1
├─ reduce-css-calc@1.3.0
├─ reduce-function-call@1.0.2
├─ regenerate@1.3.2
├─ regenerator-runtime@0.10.3
├─ regenerator-transform@0.9.8
├─ regex-cache@0.4.3
├─ regexpu-core@1.0.0
├─ regjsgen@0.2.0
├─ regjsparser@0.1.5
├─ relateurl@0.2.7
├─ renderkid@2.0.1
├─ repeat-element@1.1.2
├─ repeat-string@1.6.1
├─ repeating@2.0.1
├─ request@2.81.0
├─ require-directory@2.1.1
├─ require-from-string@1.2.1
├─ require-main-filename@1.0.1
├─ require-uncached@1.0.3
├─ requires-port@1.0.0
├─ resolve-from@1.0.1
├─ resolve@1.3.2
├─ restore-cursor@1.0.1
├─ right-align@0.1.3
├─ rimraf@2.6.1
├─ ripemd160@0.2.0
├─ run-async@0.1.0
├─ rx-lite@3.1.2
├─ safe-buffer@5.0.1
├─ sane@1.4.1
├─ sax@1.2.2
├─ semver@5.3.0
├─ send@0.15.1
├─ serve-index@1.8.0
├─ serve-static@1.12.1
├─ set-blocking@2.0.0
├─ set-immediate-shim@1.0.1
├─ setimmediate@1.0.5
├─ setprototypeof@1.0.3
├─ sha.js@2.2.6
├─ shelljs@0.7.7
├─ shellwords@0.1.0
├─ signal-exit@3.0.2
├─ slash@1.0.0
├─ slice-ansi@0.0.4
├─ sntp@1.0.9
├─ sockjs-client@1.0.1
├─ sockjs@0.3.18
├─ sort-keys@1.1.2
├─ source-list-map@0.1.8
├─ source-map-support@0.4.14
├─ source-map@0.5.6
├─ spdx-correct@1.0.2
├─ spdx-expression-parse@1.0.4
├─ spdx-license-ids@1.2.2
├─ sprintf-js@1.0.3
├─ sshpk@1.11.0
├─ statuses@1.3.1
├─ stream-browserify@2.0.1
├─ stream-cache@0.0.2
├─ stream-http@2.6.3
├─ strict-uri-encode@1.1.0
├─ string_decoder@0.10.31
├─ string-width@1.0.2
├─ string.prototype.codepointat@0.2.0
├─ stringstream@0.0.5
├─ strip-ansi@3.0.1
├─ strip-bom@2.0.0
├─ strip-json-comments@2.0.1
├─ style-loader@0.13.1
├─ supports-color@3.2.3
├─ svgo@0.7.2
├─ symbol-tree@3.2.2
├─ table@3.8.3
├─ tapable@0.1.10
├─ tar-pack@3.4.0
├─ tar@2.2.1
├─ test-exclude@3.3.0
├─ text-table@0.2.0
├─ throat@3.0.0
├─ through@2.3.8
├─ timers-browserify@2.0.2
├─ tmpl@1.0.4
├─ to-arraybuffer@1.0.1
├─ to-fast-properties@1.0.2
├─ toposort@1.0.3
├─ tough-cookie@2.3.2
├─ tr46@0.0.3
├─ trim-right@1.0.1
├─ tryit@1.0.3
├─ tty-browserify@0.0.0
├─ tunnel-agent@0.6.0
├─ tweetnacl@0.14.5
├─ type-check@0.3.2
├─ type-is@1.6.14
├─ typedarray@0.0.6
├─ uglify-js@2.8.18
├─ uglify-to-browserify@1.0.2
├─ uid-number@0.0.6
├─ uniq@1.0.1
├─ uniqid@4.1.1
├─ uniqs@2.0.0
├─ unpipe@1.0.0
├─ upper-case@1.1.3
├─ url-loader@0.5.7
├─ url-parse@1.1.8
├─ url@0.11.0
├─ user-home@2.0.0
├─ util-deprecate@1.0.2
├─ util@0.10.3
├─ utila@0.3.3
├─ utils-merge@1.0.0
├─ uuid@2.0.3
├─ validate-npm-package-license@3.0.1
├─ vary@1.1.1
├─ vendors@1.0.1
├─ verror@1.3.6
├─ vm-browserify@0.0.4
├─ walker@1.0.7
├─ watch@0.10.0
├─ watchpack@0.2.9
├─ webidl-conversions@4.0.1
├─ webpack-core@0.6.9
├─ webpack-dev-middleware@1.10.1
├─ webpack-dev-server@1.16.2
├─ webpack-manifest-plugin@1.1.0
├─ webpack-sources@0.1.5
├─ webpack@1.14.0
├─ websocket-driver@0.6.5
├─ websocket-extensions@0.1.1
├─ whatwg-encoding@1.0.1
├─ whatwg-fetch@2.0.2
├─ whatwg-url@4.6.0
├─ whet.extend@0.9.9
├─ which-module@1.0.0
├─ which@1.2.14
├─ wide-align@1.1.0
├─ window-size@0.1.0
├─ wordwrap@0.0.2
├─ worker-farm@1.3.1
├─ wrap-ansi@2.1.0
├─ wrappy@1.0.2
├─ write@0.2.1
├─ xml-char-classes@1.0.0
├─ xml-name-validator@2.0.1
├─ xtend@4.0.1
├─ y18n@3.2.1
├─ yallist@2.1.2
├─ yargs-parser@4.2.1
└─ yargs@3.10.0
✨  Done in 13.11s.
Installing react and react-dom using yarnpkg...

yarn add v0.21.3
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning "react-dom@15.4.2" has unmet peer dependency "react@^15.4.2".
[4/4] 📃  Building fresh packages...
success Saved lockfile.
success Saved 13 new dependencies.
├─ encoding@0.1.12
├─ fbjs@0.8.11
├─ iconv-lite@0.4.13
├─ is-stream@1.1.0
├─ isomorphic-fetch@2.2.1
├─ loose-envify@1.3.1
├─ node-fetch@1.6.3
├─ promise@7.1.1
├─ react-dom@15.4.2
├─ react@15.4.2
├─ setimmediate@1.0.5
├─ ua-parser-js@0.7.12
└─ whatwg-fetch@2.0.2
✨  Done in 5.92s.

Success! Created test at /Users/thomas/Desktop/test
Inside that directory, you can run several commands:

  yarn start
    Starts the development server.

  yarn run build
    Bundles the app into static files for production.

  yarn test
    Starts the test runner.

  yarn run eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

  cd test
  yarn start

Happy hacking!

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

@ttraenkler thanks for the additional info.

It shows that the warning shown by the extension is consistent with the analysis from npm --ls.

dust:test thomas$ npm ls --depth 0 --json.
npm ERR! extraneous: node-pre-gyp@0.6.34 /Users/thomas/Desktop/test/node_modules/node-pre-gyp

Not clear yet why npm ls reports this module as extraneous. I'll look into this further.

All I can offer for now is to disable warnings all together using the setting npm.validate.enable and to set it to false.

@banyudu
Copy link

banyudu commented Mar 29, 2017

Thanks

@ttraenkler
Copy link

@egamma Thanks for tracking this down to npm. Was surprised to see the author of a book on my shelf answer npm questions 👍. I really like Visual Studio Code and its smooth out of the box experience. The only thing I am really missing from Webstorm is a visual GIT merge tool (microsoft/vscode#5770).

@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

😃 @ttraenkler glad you like VS Code

Improving the support for merging changes in on our roadmap, there is an extension makes merging simpler.

@egamma egamma changed the title Undeclared dependency shows problem/warning for extraneous module False positives reported when using yarn instead of npm to install modules Mar 29, 2017
@egamma egamma added bug Issue identified by VS Code Team member as probable bug and removed info-needed Issue requires more information from poster labels Mar 29, 2017
@egamma
Copy link
Member Author

egamma commented Mar 29, 2017

I can reproduce the issue when using yarn instead of npm to install the modules. It doesn't make sense to use npm ls to validate an installation that is done using yarn.

Therefore I'm thinking to disable the checking when an install is done using yarn. The fact that yarn is used for installation can be detected by the existance of the yarn.lock file.

@ttraenkler
Copy link

Alright, thanks - at least this way no more false errors are clogging the problem log. (Of course it would be nice to have some checking for package.json but there may be more pressing issues.)

@kyeotic
Copy link

kyeotic commented Mar 29, 2017

Therefore I'm thinking to disable the checking when an install is done using yarn

Alternatively, to keep the functionality, you could use yarn list when you detect yarn was used.

@banyudu
Copy link

banyudu commented Mar 30, 2017

Therefore I'm thinking to disable the checking when an install is done using yarn. The fact that yarn is used for installation can be detected by the existance of the yarn.lock file.

cnpm has this issue, too. But it doesn't have a file like yarn.lock.

@egamma
Copy link
Member Author

egamma commented Apr 3, 2017

@tyrsius

Alternatively, to keep the functionality, you could use yarn list when you detect yarn was used.

I've looked into this but yarn list doesn't do any checking of the installed modules, it only lists the information from the meta data in package.json/yarn.lock file.

@egamma
Copy link
Member Author

egamma commented Apr 3, 2017

@banyudu

cnpm has this issue, too. But it doesn't have a file like yarn.lock.

Thinking about this some more this extension should support that the user can configure which node package manager they want to use.

@banyudu
Copy link

banyudu commented Apr 5, 2017

Another option is check dependencies in modules: If some module looks like 'extraneous', check whether it is a dependency of another module which is listed in package.json.

But that may be a bit complex.

@egamma
Copy link
Member Author

egamma commented Apr 5, 2017

@banyudu I don't think the extension should try to mimic the package resolution from yarn or cnpm to detect extraneous modules. In particular for yarn extraneous modules are typically not a problem since yarn add/remove also updates the package.json. So this source of error is gone.

@banyudu
Copy link

banyudu commented Apr 5, 2017

@egamma I agree with you.

@egamma
Copy link
Member Author

egamma commented Apr 10, 2017

Published as 0.1.9

@egamma egamma closed this as completed Apr 10, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Issue identified by VS Code Team member as probable bug
Projects
None yet
Development

No branches or pull requests

4 participants