"yarn list" 列出我没有安装的东西

"yarn list" lists stuff I haven't installed

我在两台不同的机器上看到了这个。当我导航到包含我的 package.json 文件的文件夹并执行命令 yarn list 时,它列出了一堆我尚未安装的包。如果我执行命令 yarn check 然后它会抱怨大多数软件包没有安装。

那么,自从上次正常运行以来发生了什么变化? yarn 在哪里找到所有无关的包,我如何说服它它们真的不存在?

以下是我的项目目录中的所有相关文件:

package.json

{
    "name": "indigo",
    "version": "1.0.0",
    "license": "UNLICENSED",
    "dependencies": {
        "@fortawesome/fontawesome-pro": "^5.2.0",
        "bootstrap": "^3.3.7",
        "bootstrap-datepicker": "^1.8.0",
        "bootstrap-switch": "^3.3.3",
        "braintree-web": "^3.32.0",
        "jquery": "^3.3.1",
        "jquery-ajax-unobtrusive": "aspnet/jquery-ajax-unobtrusive#^3.2.5",
        "jquery-validation": "^1.17.0",
        "jquery-validation-unobtrusive": "^3.2.9",
        "npm": "^6.9.0",
        "signalr": "2.3.0"
    },
    "engines": {
        "yarn": ">= 1.0.0"
    }
}

yarn.lock

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


"@braintree/asset-loader@0.2.1":
  version "0.2.1"
  resolved "https://registry.yarnpkg.com/@braintree/asset-loader/-/asset-loader-0.2.1.tgz#1f744aada54321ff591e846d707a7b7d58d7ca9f"
  dependencies:
    promise-polyfill "^8.1.0"

"@braintree/browser-detection@1.7.0", "@braintree/browser-detection@^1.5.0":
  version "1.7.0"
  resolved "https://registry.yarnpkg.com/@braintree/browser-detection/-/browser-detection-1.7.0.tgz#895ba64b700c3f36cab5c54591caf71a41171dd8"

"@braintree/class-list@0.1.0":
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/@braintree/class-list/-/class-list-0.1.0.tgz#d6c8606ce6a82b4b37f28e32eadd090abcf1adaa"

"@braintree/iframer@1.0.3":
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/@braintree/iframer/-/iframer-1.0.3.tgz#21dd1fd4cebd4154aeab1efa4d5b0d5f4384364e"

"@braintree/sanitize-url@3.1.0":
  version "3.1.0"
  resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz#8ff71d51053cd5ee4981e5a501d80a536244f7fd"

"@braintree/wrap-promise@1.1.1":
  version "1.1.1"
  resolved "https://registry.yarnpkg.com/@braintree/wrap-promise/-/wrap-promise-1.1.1.tgz#d22c76855e6d4b4012610060421fae1a37ec90b0"

"@fortawesome/fontawesome-pro@^5.2.0":
  version "5.8.1"
  resolved "https://npm.fontawesome.com/@fortawesome/fontawesome-pro/-/fontawesome-pro-5.8.1.tgz#a676c70df0ea7968457cd338ba19d360d8b037d2"

bootstrap-datepicker@^1.8.0:
  version "1.8.0"
  resolved "https://registry.yarnpkg.com/bootstrap-datepicker/-/bootstrap-datepicker-1.8.0.tgz#c63513931e6f09f16ae9f11b62f32d950df3958e"
  dependencies:
    jquery ">=1.7.1 <4.0.0"

bootstrap-switch@^3.3.3:
  version "3.4.0"
  resolved "https://registry.yarnpkg.com/bootstrap-switch/-/bootstrap-switch-3.4.0.tgz#6bbb0445ad8b4264883d06366d48aad3c06988f4"

bootstrap@^3.3.7:
  version "3.4.1"
  resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.4.1.tgz#c3a347d419e289ad11f4033e3c4132b87c081d72"

braintree-web@^3.32.0:
  version "3.44.2"
  resolved "https://registry.yarnpkg.com/braintree-web/-/braintree-web-3.44.2.tgz#87c671ee3739d9af699901e66f438281c143c397"
  dependencies:
    "@braintree/asset-loader" "0.2.1"
    "@braintree/browser-detection" "1.7.0"
    "@braintree/class-list" "0.1.0"
    "@braintree/iframer" "1.0.3"
    "@braintree/sanitize-url" "3.1.0"
    "@braintree/wrap-promise" "1.1.1"
    card-validator "6.1.0"
    credit-card-type "8.2.0"
    framebus "3.0.2"
    inject-stylesheet "1.0.0"
    promise-polyfill "8.1.0"
    restricted-input "1.2.7"

card-validator@6.1.0:
  version "6.1.0"
  resolved "https://registry.yarnpkg.com/card-validator/-/card-validator-6.1.0.tgz#d36bfc9ff8ee0c69e02d676b2b27f7b6d2dae92d"
  dependencies:
    credit-card-type "^8.0.0"

credit-card-type@8.2.0, credit-card-type@^8.0.0:
  version "8.2.0"
  resolved "https://registry.yarnpkg.com/credit-card-type/-/credit-card-type-8.2.0.tgz#507a43b257f0f3b8bd4d4b339a419741fc7e6236"

framebus@3.0.2:
  version "3.0.2"
  resolved "https://registry.yarnpkg.com/framebus/-/framebus-3.0.2.tgz#0c99c70cb507522aae6ed485e1317fc913873a8a"

inject-stylesheet@1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/inject-stylesheet/-/inject-stylesheet-1.0.0.tgz#f673047458ee58f109fee4cfb66b09f362ccc261"

jquery-ajax-unobtrusive@aspnet/jquery-ajax-unobtrusive#^3.2.5:
  version "3.2.6"
  resolved "https://codeload.github.com/aspnet/jquery-ajax-unobtrusive/tar.gz/dd69746ae0771e3f4232a6852210b8c17718e782"
  dependencies:
    jquery ">=1.8"

jquery-validation-unobtrusive@^3.2.9:
  version "3.2.11"
  resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.11.tgz#175ee46380385a0e33ed320f255fad321f68f9f5"
  dependencies:
    jquery ">=1.8"
    jquery-validation ">=1.16"

jquery-validation@>=1.16, jquery-validation@^1.17.0:
  version "1.19.0"
  resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.0.tgz#0fedf0c0483a030c4fff072398898ac18cfd6e40"
  dependencies:
    jquery "^1.7 || ^2.0 || ^3.1"

jquery@>=1.6.4, "jquery@>=1.7.1 <4.0.0", jquery@>=1.8, "jquery@^1.7 || ^2.0 || ^3.1", jquery@^3.3.1:
  version "3.4.1"
  resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"

promise-polyfill@8.1.0, promise-polyfill@^8.1.0:
  version "8.1.0"
  resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.0.tgz#30059da54d1358ce905ac581f287e184aedf995d"

restricted-input@1.2.7:
  version "1.2.7"
  resolved "https://registry.yarnpkg.com/restricted-input/-/restricted-input-1.2.7.tgz#e1298f5fd8c430cc2d8e6bb1175524023205cb34"
  dependencies:
    "@braintree/browser-detection" "^1.5.0"

signalr@2.3.0:
  version "2.3.0"
  resolved "https://registry.yarnpkg.com/signalr/-/signalr-2.3.0.tgz#2c5aceab8a3d6eaa81785debd8bca069bc3ed14d"
  dependencies:
    jquery ">=1.6.4"

.npmrc

@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=xxx

.yarnrc

--modules-folder wwwroot/lib

这是 yarn list

的输出
yarn list v1.15.2
├─ @braintree/asset-loader@0.2.1
│  └─ promise-polyfill@^8.1.0
├─ @braintree/browser-detection@1.7.0
├─ @braintree/class-list@0.1.0
├─ @braintree/iframer@1.0.3
├─ @braintree/sanitize-url@3.1.0
├─ @braintree/wrap-promise@1.1.1
├─ @fortawesome/fontawesome-pro@5.8.1
├─ abbrev@1.1.1
├─ agent-base@4.2.1
│  └─ es6-promisify@^5.0.0
├─ agentkeepalive@3.5.2
│  └─ humanize-ms@^1.2.1
├─ ajv@6.10.0
│  ├─ fast-deep-equal@^2.0.1
│  ├─ fast-json-stable-stringify@^2.0.0
│  ├─ json-schema-traverse@^0.4.1
│  └─ uri-js@^4.2.2
├─ ansi-align@2.0.0
│  └─ string-width@^2.0.0
├─ ansi-regex@2.1.1
├─ ansi-styles@3.2.1
│  └─ color-convert@^1.9.0
├─ ansicolors@0.3.2
├─ ansistyles@0.1.3
├─ aproba@2.0.0
├─ archy@1.0.0
├─ are-we-there-yet@1.1.5
│  ├─ delegates@^1.0.0
│  └─ readable-stream@^2.0.6
├─ asap@2.0.6
├─ asn1@0.2.4
│  └─ safer-buffer@~2.1.0
├─ assert-plus@1.0.0
├─ asynckit@0.4.0
├─ aws-sign2@0.7.0
├─ aws4@1.8.0
├─ balanced-match@1.0.0
├─ bcrypt-pbkdf@1.0.2
│  └─ tweetnacl@^0.14.3
├─ bin-links@1.1.2
│  ├─ bluebird@^3.5.0
│  ├─ cmd-shim@^2.0.2
│  ├─ gentle-fs@^2.0.0
│  ├─ graceful-fs@^4.1.11
│  └─ write-file-atomic@^2.3.0
├─ block-stream@0.0.9
│  └─ inherits@~2.0.0
├─ bluebird@3.5.4
├─ bootstrap-datepicker@1.8.0
│  └─ jquery@>=1.7.1 <4.0.0
├─ bootstrap-switch@3.4.0
├─ bootstrap@3.4.1
├─ boxen@1.3.0
│  ├─ ansi-align@^2.0.0
│  ├─ camelcase@^4.0.0
│  ├─ chalk@^2.0.1
│  ├─ cli-boxes@^1.0.0
│  ├─ string-width@^2.0.0
│  ├─ term-size@^1.2.0
│  └─ widest-line@^2.0.0
├─ brace-expansion@1.1.11
│  ├─ balanced-match@^1.0.0
│  └─ concat-map@0.0.1
├─ braintree-web@3.44.2
│  ├─ @braintree/asset-loader@0.2.1
│  ├─ @braintree/browser-detection@1.7.0
│  ├─ @braintree/class-list@0.1.0
│  ├─ @braintree/iframer@1.0.3
│  ├─ @braintree/sanitize-url@3.1.0
│  ├─ @braintree/wrap-promise@1.1.1
│  ├─ card-validator@6.1.0
│  ├─ credit-card-type@8.2.0
│  ├─ framebus@3.0.2
│  ├─ inject-stylesheet@1.0.0
│  ├─ promise-polyfill@8.1.0
│  └─ restricted-input@1.2.7
├─ buffer-from@1.1.1
├─ builtins@1.0.3
├─ byline@5.0.0
├─ byte-size@5.0.1
├─ cacache@11.3.2
│  ├─ bluebird@^3.5.3
│  ├─ chownr@^1.1.1
│  ├─ figgy-pudding@^3.5.1
│  ├─ glob@^7.1.3
│  ├─ graceful-fs@^4.1.15
│  ├─ lru-cache@^5.1.1
│  ├─ lru-cache@5.1.1
│  │  └─ yallist@^3.0.2
│  ├─ mississippi@^3.0.0
│  ├─ mkdirp@^0.5.1
│  ├─ move-concurrently@^1.0.1
│  ├─ promise-inflight@^1.0.1
│  ├─ rimraf@^2.6.2
│  ├─ ssri@^6.0.1
│  ├─ unique-filename@^1.1.1
│  └─ y18n@^4.0.0
├─ call-limit@1.1.0
├─ camelcase@4.1.0
├─ capture-stack-trace@1.0.1
├─ card-validator@6.1.0
│  └─ credit-card-type@^8.0.0
├─ caseless@0.12.0
├─ chalk@2.4.2
│  ├─ ansi-styles@^3.2.1
│  ├─ escape-string-regexp@^1.0.5
│  └─ supports-color@^5.3.0
├─ chownr@1.1.1
├─ ci-info@2.0.0
├─ cidr-regex@2.0.10
│  └─ ip-regex@^2.1.0
├─ cli-boxes@1.0.0
├─ cli-columns@3.1.2
│  ├─ string-width@^2.0.0
│  └─ strip-ansi@^3.0.1
├─ cli-table3@0.5.1
│  ├─ colors@^1.1.2
│  ├─ object-assign@^4.1.0
│  └─ string-width@^2.1.1
├─ cliui@4.1.0
│  ├─ ansi-regex@3.0.0
│  ├─ string-width@^2.1.1
│  ├─ strip-ansi@^4.0.0
│  ├─ strip-ansi@4.0.0
│  │  └─ ansi-regex@^3.0.0
│  └─ wrap-ansi@^2.0.0
├─ clone@1.0.4
├─ cmd-shim@2.0.2
│  ├─ graceful-fs@^4.1.2
│  └─ mkdirp@~0.5.0
├─ code-point-at@1.1.0
├─ color-convert@1.9.3
│  └─ color-name@1.1.3
├─ color-name@1.1.3
├─ colors@1.3.3
├─ columnify@1.5.4
│  ├─ strip-ansi@^3.0.0
│  └─ wcwidth@^1.0.0
├─ combined-stream@1.0.7
│  └─ delayed-stream@~1.0.0
├─ concat-map@0.0.1
├─ concat-stream@1.6.2
│  ├─ buffer-from@^1.0.0
│  ├─ inherits@^2.0.3
│  ├─ readable-stream@^2.2.2
│  └─ typedarray@^0.0.6
├─ config-chain@1.1.12
│  ├─ ini@^1.3.4
│  └─ proto-list@~1.2.1
├─ configstore@3.1.2
│  ├─ dot-prop@^4.1.0
│  ├─ graceful-fs@^4.1.2
│  ├─ make-dir@^1.0.0
│  ├─ unique-string@^1.0.0
│  ├─ write-file-atomic@^2.0.0
│  └─ xdg-basedir@^3.0.0
├─ console-control-strings@1.1.0
├─ copy-concurrently@1.0.5
│  ├─ aproba@^1.1.1
│  ├─ aproba@1.2.0
│  ├─ fs-write-stream-atomic@^1.0.8
│  ├─ iferr@^0.1.5
│  ├─ mkdirp@^0.5.1
│  ├─ rimraf@^2.5.4
│  └─ run-queue@^1.0.0
├─ core-util-is@1.0.2
├─ create-error-class@3.0.2
│  └─ capture-stack-trace@^1.0.0
├─ credit-card-type@8.2.0
├─ cross-spawn@5.1.0
│  ├─ lru-cache@^4.0.1
│  ├─ shebang-command@^1.2.0
│  └─ which@^1.2.9
├─ crypto-random-string@1.0.0
├─ cyclist@0.2.2
├─ dashdash@1.14.1
│  └─ assert-plus@^1.0.0
├─ debug@3.1.0
│  ├─ ms@2.0.0
│  └─ ms@2.0.0
├─ debuglog@1.0.1
├─ decamelize@1.2.0
├─ decode-uri-component@0.2.0
├─ deep-extend@0.6.0
├─ defaults@1.0.3
│  └─ clone@^1.0.2
├─ delayed-stream@1.0.0
├─ delegates@1.0.0
├─ detect-indent@5.0.0
├─ detect-newline@2.1.0
├─ dezalgo@1.0.3
│  ├─ asap@^2.0.0
│  └─ wrappy@1
├─ dot-prop@4.2.0
│  └─ is-obj@^1.0.0
├─ dotenv@5.0.1
├─ duplexer3@0.1.4
├─ duplexify@3.7.1
│  ├─ end-of-stream@^1.0.0
│  ├─ inherits@^2.0.1
│  ├─ readable-stream@^2.0.0
│  └─ stream-shift@^1.0.0
├─ ecc-jsbn@0.1.2
│  ├─ jsbn@~0.1.0
│  └─ safer-buffer@^2.1.0
├─ editor@1.0.0
├─ encoding@0.1.12
│  └─ iconv-lite@~0.4.13
├─ end-of-stream@1.4.1
│  └─ once@^1.4.0
├─ err-code@1.1.2
├─ errno@0.1.7
│  └─ prr@~1.0.1
├─ es6-promise@4.2.6
├─ es6-promisify@5.0.0
│  └─ es6-promise@^4.0.3
├─ escape-string-regexp@1.0.5
├─ execa@0.7.0
│  ├─ cross-spawn@^5.0.1
│  ├─ get-stream@^3.0.0
│  ├─ get-stream@3.0.0
│  ├─ is-stream@^1.1.0
│  ├─ npm-run-path@^2.0.0
│  ├─ p-finally@^1.0.0
│  ├─ signal-exit@^3.0.0
│  └─ strip-eof@^1.0.0
├─ extend@3.0.2
├─ extsprintf@1.3.0
├─ fast-deep-equal@2.0.1
├─ fast-json-stable-stringify@2.0.0
├─ figgy-pudding@3.5.1
├─ find-npm-prefix@1.0.2
├─ find-up@2.1.0
│  └─ locate-path@^2.0.0
├─ flush-write-stream@1.1.1
│  ├─ inherits@^2.0.3
│  └─ readable-stream@^2.3.6
├─ forever-agent@0.6.1
├─ form-data@2.3.3
│  ├─ asynckit@^0.4.0
│  ├─ combined-stream@^1.0.6
│  └─ mime-types@^2.1.12
├─ framebus@3.0.2
├─ from2@1.3.0
│  ├─ inherits@~2.0.1
│  ├─ isarray@0.0.1
│  ├─ readable-stream@~1.1.10
│  ├─ readable-stream@1.1.14
│  │  ├─ core-util-is@~1.0.0
│  │  ├─ inherits@~2.0.1
│  │  ├─ isarray@0.0.1
│  │  └─ string_decoder@~0.10.x
│  └─ string_decoder@0.10.31
├─ fs-minipass@1.2.5
│  └─ minipass@^2.2.1
├─ fs-vacuum@1.2.10
│  ├─ graceful-fs@^4.1.2
│  ├─ path-is-inside@^1.0.1
│  └─ rimraf@^2.5.2
├─ fs-write-stream-atomic@1.0.10
│  ├─ graceful-fs@^4.1.2
│  ├─ iferr@^0.1.5
│  ├─ imurmurhash@^0.1.4
│  └─ readable-stream@1 || 2
├─ fs.realpath@1.0.0
├─ fstream@1.0.11
│  ├─ graceful-fs@^4.1.2
│  ├─ inherits@~2.0.0
│  ├─ mkdirp@>=0.5 0
│  └─ rimraf@2
├─ gauge@2.7.4
│  ├─ aproba@^1.0.3
│  ├─ aproba@1.2.0
│  ├─ console-control-strings@^1.0.0
│  ├─ has-unicode@^2.0.0
│  ├─ is-fullwidth-code-point@1.0.0
│  │  └─ number-is-nan@^1.0.0
│  ├─ object-assign@^4.1.0
│  ├─ signal-exit@^3.0.0
│  ├─ string-width@^1.0.1
│  ├─ string-width@1.0.2
│  │  ├─ code-point-at@^1.0.0
│  │  ├─ is-fullwidth-code-point@^1.0.0
│  │  └─ strip-ansi@^3.0.0
│  ├─ strip-ansi@^3.0.1
│  └─ wide-align@^1.1.0
├─ genfun@5.0.0
├─ gentle-fs@2.0.1
│  ├─ aproba@^1.1.2
│  ├─ aproba@1.2.0
│  ├─ fs-vacuum@^1.2.10
│  ├─ graceful-fs@^4.1.11
│  ├─ iferr@^0.1.5
│  ├─ mkdirp@^0.5.1
│  ├─ path-is-inside@^1.0.2
│  ├─ read-cmd-shim@^1.0.1
│  └─ slide@^1.1.6
├─ get-caller-file@1.0.3
├─ get-stream@4.1.0
│  └─ pump@^3.0.0
├─ getpass@0.1.7
│  └─ assert-plus@^1.0.0
├─ glob@7.1.4
│  ├─ fs.realpath@^1.0.0
│  ├─ inflight@^1.0.4
│  ├─ inherits@2
│  ├─ minimatch@^3.0.4
│  ├─ once@^1.3.0
│  └─ path-is-absolute@^1.0.0
├─ global-dirs@0.1.1
│  └─ ini@^1.3.4
├─ got@6.7.1
│  ├─ create-error-class@^3.0.0
│  ├─ duplexer3@^0.1.4
│  ├─ get-stream@^3.0.0
│  ├─ get-stream@3.0.0
│  ├─ is-redirect@^1.0.0
│  ├─ is-retry-allowed@^1.0.0
│  ├─ is-stream@^1.0.0
│  ├─ lowercase-keys@^1.0.0
│  ├─ safe-buffer@^5.0.1
│  ├─ timed-out@^4.0.0
│  ├─ unzip-response@^2.0.1
│  └─ url-parse-lax@^1.0.0
├─ graceful-fs@4.1.15
├─ har-schema@2.0.0
├─ har-validator@5.1.3
│  ├─ ajv@^6.5.5
│  └─ har-schema@^2.0.0
├─ has-flag@3.0.0
├─ has-unicode@2.0.1
├─ hosted-git-info@2.7.1
├─ http-cache-semantics@3.8.1
├─ http-proxy-agent@2.1.0
│  ├─ agent-base@4
│  └─ debug@3.1.0
├─ http-signature@1.2.0
│  ├─ assert-plus@^1.0.0
│  ├─ jsprim@^1.2.2
│  └─ sshpk@^1.7.0
├─ https-proxy-agent@2.2.1
│  ├─ agent-base@^4.1.0
│  ├─ debug@^3.1.0
│  └─ debug@3.2.6
│     └─ ms@^2.1.1
├─ humanize-ms@1.2.1
│  └─ ms@^2.0.0
├─ iconv-lite@0.4.24
│  └─ safer-buffer@>= 2.1.2 < 3
├─ iferr@0.1.5
├─ ignore-walk@3.0.1
│  └─ minimatch@^3.0.4
├─ import-lazy@2.1.0
├─ imurmurhash@0.1.4
├─ inflight@1.0.6
│  ├─ once@^1.3.0
│  └─ wrappy@1
├─ inherits@2.0.3
├─ ini@1.3.5
├─ init-package-json@1.10.3
│  ├─ glob@^7.1.1
│  ├─ npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0
│  ├─ promzard@^0.3.0
│  ├─ read-package-json@1 || 2
│  ├─ read@~1.0.1
│  ├─ semver@2.x || 3.x || 4 || 5
│  ├─ validate-npm-package-license@^3.0.1
│  └─ validate-npm-package-name@^3.0.0
├─ inject-stylesheet@1.0.0
├─ invert-kv@1.0.0
├─ ip-regex@2.1.0
├─ ip@1.1.5
├─ is-ci@1.2.1
│  ├─ ci-info@^1.5.0
│  └─ ci-info@1.6.0
├─ is-cidr@3.0.0
│  └─ cidr-regex@^2.0.10
├─ is-fullwidth-code-point@2.0.0
├─ is-installed-globally@0.1.0
│  ├─ global-dirs@^0.1.0
│  └─ is-path-inside@^1.0.0
├─ is-npm@1.0.0
├─ is-obj@1.0.1
├─ is-path-inside@1.0.1
│  └─ path-is-inside@^1.0.1
├─ is-redirect@1.0.0
├─ is-retry-allowed@1.1.0
├─ is-stream@1.1.0
├─ is-typedarray@1.0.0
├─ isarray@1.0.0
├─ isexe@2.0.0
├─ isstream@0.1.2
├─ jquery-ajax-unobtrusive@3.2.6
│  └─ jquery@>=1.8
├─ jquery-validation-unobtrusive@3.2.11
│  ├─ jquery-validation@>=1.16
│  └─ jquery@>=1.8
├─ jquery-validation@1.19.0
│  └─ jquery@^1.7 || ^2.0 || ^3.1
├─ jquery@3.4.1
├─ jsbn@0.1.1
├─ json-parse-better-errors@1.0.2
├─ json-schema-traverse@0.4.1
├─ json-schema@0.2.3
├─ json-stringify-safe@5.0.1
├─ jsonparse@1.3.1
├─ JSONStream@1.3.5
│  ├─ jsonparse@^1.2.0
│  └─ through@>=2.2.7 <3
├─ jsprim@1.4.1
│  ├─ assert-plus@1.0.0
│  ├─ extsprintf@1.3.0
│  ├─ json-schema@0.2.3
│  └─ verror@1.10.0
├─ latest-version@3.1.0
│  └─ package-json@^4.0.0
├─ lazy-property@1.0.0
├─ lcid@1.0.0
│  └─ invert-kv@^1.0.0
├─ libcipm@3.0.3
│  ├─ bin-links@^1.1.2
│  ├─ bluebird@^3.5.1
│  ├─ figgy-pudding@^3.5.1
│  ├─ find-npm-prefix@^1.0.2
│  ├─ graceful-fs@^4.1.11
│  ├─ ini@^1.3.5
│  ├─ lock-verify@^2.0.2
│  ├─ mkdirp@^0.5.1
│  ├─ npm-lifecycle@^2.0.3
│  ├─ npm-logical-tree@^1.2.1
│  ├─ npm-package-arg@^6.1.0
│  ├─ pacote@^9.1.0
│  ├─ read-package-json@^2.0.13
│  ├─ rimraf@^2.6.2
│  └─ worker-farm@^1.6.0
├─ libnpm@2.0.1
│  ├─ bin-links@^1.1.2
│  ├─ bluebird@^3.5.3
│  ├─ find-npm-prefix@^1.0.2
│  ├─ libnpmaccess@^3.0.1
│  ├─ libnpmconfig@^1.2.1
│  ├─ libnpmhook@^5.0.2
│  ├─ libnpmorg@^1.0.0
│  ├─ libnpmpublish@^1.1.0
│  ├─ libnpmsearch@^2.0.0
│  ├─ libnpmteam@^1.0.1
│  ├─ lock-verify@^2.0.2
│  ├─ npm-lifecycle@^2.1.0
│  ├─ npm-logical-tree@^1.2.1
│  ├─ npm-package-arg@^6.1.0
│  ├─ npm-profile@^4.0.1
│  ├─ npm-registry-fetch@^3.8.0
│  ├─ npmlog@^4.1.2
│  ├─ pacote@^9.2.3
│  ├─ read-package-json@^2.0.13
│  └─ stringify-package@^1.0.0
├─ libnpmaccess@3.0.1
│  ├─ aproba@^2.0.0
│  ├─ get-stream@^4.0.0
│  ├─ npm-package-arg@^6.1.0
│  └─ npm-registry-fetch@^3.8.0
├─ libnpmconfig@1.2.1
│  ├─ figgy-pudding@^3.5.1
│  ├─ find-up@^3.0.0
│  ├─ find-up@3.0.0
│  │  └─ locate-path@^3.0.0
│  ├─ ini@^1.3.5
│  ├─ locate-path@3.0.0
│  │  ├─ p-locate@^3.0.0
│  │  └─ path-exists@^3.0.0
│  ├─ p-limit@2.2.0
│  │  └─ p-try@^2.0.0
│  ├─ p-locate@3.0.0
│  │  └─ p-limit@^2.0.0
│  └─ p-try@2.2.0
├─ libnpmhook@5.0.2
│  ├─ aproba@^2.0.0
│  ├─ figgy-pudding@^3.4.1
│  ├─ get-stream@^4.0.0
│  └─ npm-registry-fetch@^3.8.0
├─ libnpmorg@1.0.0
│  ├─ aproba@^2.0.0
│  ├─ figgy-pudding@^3.4.1
│  ├─ get-stream@^4.0.0
│  └─ npm-registry-fetch@^3.8.0
├─ libnpmpublish@1.1.1
│  ├─ aproba@^2.0.0
│  ├─ figgy-pudding@^3.5.1
│  ├─ get-stream@^4.0.0
│  ├─ lodash.clonedeep@^4.5.0
│  ├─ normalize-package-data@^2.4.0
│  ├─ npm-package-arg@^6.1.0
│  ├─ npm-registry-fetch@^3.8.0
│  ├─ semver@^5.5.1
│  └─ ssri@^6.0.1
├─ libnpmsearch@2.0.0
│  ├─ figgy-pudding@^3.5.1
│  ├─ get-stream@^4.0.0
│  └─ npm-registry-fetch@^3.8.0

etc.

我明白了(大部分)。由于一些我还没有解决的魔法,我在我的 packages.json 文件中插入了对 npm 的引用。

这是我认为发生的事情:当我 运行 yarn list 它通知我有更新版本的 yarn 可用。经过相当大的努力和谷歌搜索,我发现我可以通过以下方式将 yarn 和 npm 升级到最新版本:

> npm I npm
> npm install -g yarn

但是,在这两个命令的某处,它添加了对我的 packages.json 文件的 npm 引用。

OP 问了一个紧迫的问题:"What changed?"有人可以 post 一个更好的答案,解释我应该如何在不弄乱我的 packages.json 文件的情况下升级 yarn 和 npm ?