microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.94k stars 28.77k forks source link

Extension is excruciatingly slow at linting suddenly #72773

Closed acoutts closed 5 years ago

acoutts commented 5 years ago

Steps to Reproduce:

  1. Type out an export name that is not currently imported.
  2. After 20-45 seconds, it will finally find the export and allow you to press tab to automatically import the required piece.

This has always been very fast but lately it has suddenly become so slow it's almost unbearable. I've sat waiting up to 45 seconds for it to finish "thinking" which usually takes no more than a few seconds.

I have a 5.0 GHz i7 and 32gb of RAM so the system resources are not an issue. When it's stuck lagging, there's a single thread of tsserver.js using 100% cpu but otherwise the system seems relaxed.

egamma commented 5 years ago

@acoutts can you confirm that you are using the now deprecated vscode-tslint extension and not the new https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-tslint-plugin extension? You can verify this by inspecting the installed extensions using the extensions viewlet.

acoutts commented 5 years ago

Hey @egamma thanks for checking - I have confirmed with certainty that I am using the new extension and not the deprecated one. Screenshot from 2019-04-23 08-10-51

I also updated to the latest typescript and tslint versions but no improvement:

$ tslint --version
5.16.0
$ tsc --version
Version 3.4.4

Some more system information:

code --version
1.33.1
51b0b28134d51361cf996d2f0a1c698247aeabd8
x64
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic
$ uname -a
Linux xff0c 4.15.0-47-generic #50-Ubuntu SMP Wed Mar 13 10:44:52 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
egamma commented 5 years ago

@acoutts this is the repository of the deprecated extension, moving to the new one.

acoutts commented 5 years ago

@acoutts this is the repository of the deprecated extension, moving to the new one.

Ah thank you. Do I need to re-submit it there?

egamma commented 5 years ago

@acoutts no need to resubmit, github now supports to transfer issues to other repos

mjbvz commented 5 years ago

@acoutts Does this only happen when this extension is installed?

acoutts commented 5 years ago

@acoutts Does this only happen when this extension is installed?

Yeah, since this is actually an issue in the extension itself as the tslint process doesn't run while using vscode otherwise.

mjbvz commented 5 years ago

Auto imports are provided by typescript itself, not by this plugin. This plugin could be slowing down normal typescript however. If you disable this extension and open the same project in VS Code, do automatic imports and errors show up more quickly?

Also can you share your project?

acoutts commented 5 years ago

Ah very good to know. Unfortunately I can't share the code as it is internal to the project, but I did test with the extension disabled and it still seems slow. In that case that means this is probably outside of the scope for this repository. Do you have any recommendations where to go next?

mjbvz commented 5 years ago

Ok, I've moved this issue to VS Code to continue investigation.

Can you share more information about the project structure, such as:

You can also try collecting the TS Server log:

  1. Set "typescript.tsserver.log": "verbose",
  2. Restart VS Code and reproduce the problem
  3. In VS Code, run the TypeScript: Open TS Server log command
  4. This should open a folder with a tsserver.log file in it

If you can share the log, I can also take a look to see if anything stands out for the performance

⚠️Warning: The TypeScript log may include information from your workspace, including file paths and source code. If you have any concerns about posting this publicly on Github, just let me know and we can arrange something else. On our side, we only use these logs to investigate issues like this

acoutts commented 5 years ago

I would prefer to DM the log file if possible - what's the best way to do that? Otherwise, here is some more context. I would estimate there is close to but less than 50 typescript files right now. Just using NPM for package management.

Note: I was unable to run that command, but I did ultimately locate it manually: Screenshot from 2019-04-23 14-29-21

tsconfig.json (located in React project root):

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noUnusedLocals": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": false,
    "noEmit": true,
    "baseUrl": "./src",
    "jsx": "preserve",
    "experimentalDecorators": true,
    "paths": {
      "stores/*": ["./stores/*"],
      "lib/*": ["./Pages/lib/*"],
      "SharedComponents/*": ["./Pages/SharedComponents/*"],
    }
  },
}

Here is the output of tree -L 2 to give an overview of the folder structure. The total project folder size is ~500mb with 5,457 directories and 34,965 files.

.
├── ambient.d.ts
├── build
│   ├── android-chrome-192x192.png
│   ├── android-chrome-256x256.png
│   ├── apple-touch-icon.png
│   ├── asset-manifest.json
│   ├── browserconfig.xml
│   ├── chart
│   ├── favicon-16x16.png
│   ├── favicon-32x32.png
│   ├── favicon.ico
│   ├── fonts
│   ├── images
│   ├── index.html
│   ├── manifest.json
│   ├── mstile-150x150.png
│   ├── precache-manifest.a2c41794dfab8f6255a3a33105b35d8c.js
│   ├── safari-pinned-tab.svg
│   ├── service-worker.js
│   ├── site.webmanifest
│   └── static
├── config
│   ├── env.js
│   ├── jest
│   ├── paths.js
│   ├── webpack.config.js
│   └── webpackDevServer.config.js
├── DEFAULTS.env
├── node_modules
│   ├── abab
│   ├── accepts
│   ├── acorn
│   ├── acorn-dynamic-import
│   ├── acorn-globals
│   ├── acorn-jsx
│   ├── acorn-walk
│   ├── address
│   ├── after
│   ├── ajv
│   ├── ajv-errors
│   ├── ajv-keywords
│   ├── alphanum-sort
│   ├── ansi-colors
│   ├── ansi-escapes
│   ├── ansi-html
│   ├── ansi-regex
│   ├── ansi-styles
│   ├── anymatch
│   ├── append-transform
│   ├── aproba
│   ├── argparse
│   ├── aria-query
│   ├── arraybuffer.slice
│   ├── array-equal
│   ├── array-filter
│   ├── array-flatten
│   ├── array-includes
│   ├── array-map
│   ├── array-reduce
│   ├── array-union
│   ├── array-uniq
│   ├── array-unique
│   ├── arr-diff
│   ├── arr-flatten
│   ├── arrify
│   ├── arr-union
│   ├── asap
│   ├── asn1
│   ├── asn1.js
│   ├── assert
│   ├── assert-plus
│   ├── assign-symbols
│   ├── astral-regex
│   ├── ast-types-flow
│   ├── async
│   ├── async-each
│   ├── asynckit
│   ├── async-limiter
│   ├── atob
│   ├── autoprefixer
│   ├── aws4
│   ├── aws-sign2
│   ├── axobject-query
│   ├── @babel
│   ├── babel-code-frame
│   ├── babel-core
│   ├── babel-eslint
│   ├── babel-extract-comments
│   ├── babel-generator
│   ├── babel-helpers
│   ├── babel-jest
│   ├── babel-loader
│   ├── babel-messages
│   ├── babel-plugin-dynamic-import-node
│   ├── babel-plugin-emotion
│   ├── babel-plugin-istanbul
│   ├── babel-plugin-jest-hoist
│   ├── babel-plugin-macros
│   ├── babel-plugin-named-asset-import
│   ├── babel-plugin-styled-components
│   ├── babel-plugin-syntax-jsx
│   ├── babel-plugin-syntax-object-rest-spread
│   ├── babel-plugin-transform-object-rest-spread
│   ├── babel-plugin-transform-react-remove-prop-types
│   ├── babel-preset-jest
│   ├── babel-preset-react-app
│   ├── babel-register
│   ├── babel-runtime
│   ├── babel-template
│   ├── babel-traverse
│   ├── babel-types
│   ├── babylon
│   ├── backo2
│   ├── balanced-match
│   ├── base
│   ├── base64-arraybuffer
│   ├── base64-js
│   ├── base-x
│   ├── batch
│   ├── bcrypt-pbkdf
│   ├── better-assert
│   ├── bfj
│   ├── bigi
│   ├── big.js
│   ├── binary-extensions
│   ├── blob
│   ├── bluebird
│   ├── bn.js
│   ├── body-parser
│   ├── bonjour
│   ├── boolbase
│   ├── brace-expansion
│   ├── braces
│   ├── brorand
│   ├── browserify-aes
│   ├── browserify-cipher
│   ├── browserify-des
│   ├── browserify-rsa
│   ├── browserify-sign
│   ├── browserify-zlib
│   ├── browser-process-hrtime
│   ├── browser-resolve
│   ├── browserslist
│   ├── bs58
│   ├── bser
│   ├── buffer
│   ├── buffer-from
│   ├── buffer-indexof
│   ├── buffer-xor
│   ├── builtin-modules
│   ├── builtin-status-codes
│   ├── bytebuffer
│   ├── bytes
│   ├── cacache
│   ├── cache-base
│   ├── caller-callsite
│   ├── caller-path
│   ├── call-me-maybe
│   ├── callsite
│   ├── callsites
│   ├── camelcase
│   ├── camel-case
│   ├── camelize
│   ├── caniuse-api
│   ├── caniuse-lite
│   ├── capture-exit
│   ├── caseless
│   ├── case-sensitive-paths-webpack-plugin
│   ├── chalk
│   ├── change-emitter
│   ├── chardet
│   ├── check-types
│   ├── chokidar
│   ├── chownr
│   ├── chrome-trace-event
│   ├── ci-info
│   ├── cipher-base
│   ├── circular-json
│   ├── classnames
│   ├── class-utils
│   ├── clean-css
│   ├── cli-cursor
│   ├── cli-table3
│   ├── cliui
│   ├── cli-width
│   ├── clone-deep
│   ├── co
│   ├── coa
│   ├── code-point-at
│   ├── collection-visit
│   ├── color
│   ├── color-convert
│   ├── color-name
│   ├── colors
│   ├── color-string
│   ├── combined-stream
│   ├── commander
│   ├── comma-number
│   ├── commondir
│   ├── common-tags
│   ├── component-bind
│   ├── component-emitter
│   ├── component-inherit
│   ├── compressible
│   ├── compression
│   ├── concat-map
│   ├── concat-stream
│   ├── confusing-browser-globals
│   ├── connect-history-api-fallback
│   ├── console-browserify
│   ├── constants-browserify
│   ├── contains-path
│   ├── content-disposition
│   ├── content-type
│   ├── convert-source-map
│   ├── cookie
│   ├── cookie-signature
│   ├── copy-concurrently
│   ├── copy-descriptor
│   ├── core-js
│   ├── core-util-is
│   ├── cosmiconfig
│   ├── create-ecdh
│   ├── create-hash
│   ├── create-hmac
│   ├── cross-spawn
│   ├── crypto-browserify
│   ├── css-color-keywords
│   ├── css-color-names
│   ├── cssdb
│   ├── css-declaration-sorter
│   ├── cssesc
│   ├── css-loader
│   ├── cssnano
│   ├── cssnano-preset-default
│   ├── cssnano-util-get-arguments
│   ├── cssnano-util-get-match
│   ├── cssnano-util-raw-cache
│   ├── cssnano-util-same-parent
│   ├── csso
│   ├── cssom
│   ├── css-select
│   ├── css-select-base-adapter
│   ├── css-selector-tokenizer
│   ├── cssstyle
│   ├── @csstools
│   ├── css-to-react-native
│   ├── css-tree
│   ├── csstype
│   ├── css-unit-converter
│   ├── css-url-regex
│   ├── css-what
│   ├── cyclist
│   ├── damerau-levenshtein
│   ├── dashdash
│   ├── data-urls
│   ├── date-now
│   ├── debug
│   ├── decamelize
│   ├── decode-uri-component
│   ├── deep-equal
│   ├── deep-is
│   ├── deepmerge
│   ├── default-gateway
│   ├── default-require-extensions
│   ├── define-properties
│   ├── define-property
│   ├── del
│   ├── delayed-stream
│   ├── depd
│   ├── des.js
│   ├── destroy
│   ├── detect-indent
│   ├── detect-newline
│   ├── detect-node
│   ├── detect-port-alt
│   ├── diff
│   ├── diffie-hellman
│   ├── dir-glob
│   ├── dns-equal
│   ├── dns-packet
│   ├── dns-txt
│   ├── doctrine
│   ├── domain-browser
│   ├── dom-converter
│   ├── domelementtype
│   ├── domexception
│   ├── domhandler
│   ├── dom-helpers
│   ├── dom-serializer
│   ├── domutils
│   ├── dom-walk
│   ├── dotenv
│   ├── dotenv-expand
│   ├── dot-prop
│   ├── duplexer
│   ├── duplexify
│   ├── ecc-jsbn
│   ├── ecurve
│   ├── ee-first
│   ├── electron-to-chromium
│   ├── elliptic
│   ├── emoji-regex
│   ├── emojis-list
│   ├── @emotion
│   ├── encodeurl
│   ├── encoding
│   ├── end-of-stream
│   ├── engine.io-client
│   ├── engine.io-parser
│   ├── enhanced-resolve
│   ├── entities
│   ├── eosjs
│   ├── eosjs-ecc
│   ├── errno
│   ├── error-ex
│   ├── es6-promise
│   ├── es-abstract
│   ├── escape-html
│   ├── escape-string-regexp
│   ├── escodegen
│   ├── eslint
│   ├── eslint-config-react-app
│   ├── eslint-import-resolver-node
│   ├── eslint-loader
│   ├── eslint-module-utils
│   ├── eslint-plugin-flowtype
│   ├── eslint-plugin-import
│   ├── eslint-plugin-jsx-a11y
│   ├── eslint-plugin-react
│   ├── eslint-scope
│   ├── eslint-utils
│   ├── eslint-visitor-keys
│   ├── espree
│   ├── esprima
│   ├── esquery
│   ├── esrecurse
│   ├── es-to-primitive
│   ├── estraverse
│   ├── esutils
│   ├── etag
│   ├── eventemitter3
│   ├── events
│   ├── eventsource
│   ├── evp_bytestokey
│   ├── execa
│   ├── exec-sh
│   ├── exit
│   ├── expand-brackets
│   ├── expand-range
│   ├── expand-tilde
│   ├── expect
│   ├── express
│   ├── extend
│   ├── extend-shallow
│   ├── external-editor
│   ├── extglob
│   ├── extsprintf
│   ├── fast-deep-equal
│   ├── fast-glob
│   ├── fast-json-stable-stringify
│   ├── fast-levenshtein
│   ├── fastparse
│   ├── faye-websocket
│   ├── fbjs
│   ├── fb-watchman
│   ├── figgy-pudding
│   ├── figures
│   ├── file-entry-cache
│   ├── file-loader
│   ├── filename-regex
│   ├── fileset
│   ├── filesize
│   ├── fill-range
│   ├── finalhandler
│   ├── find-cache-dir
│   ├── find-root
│   ├── find-up
│   ├── flat-cache
│   ├── flatten
│   ├── flush-write-stream
│   ├── follow-redirects
│   ├── forever-agent
│   ├── for-in
│   ├── fork-ts-checker-webpack-plugin-alt
│   ├── form-data
│   ├── for-own
│   ├── forwarded
│   ├── fragment-cache
│   ├── fresh
│   ├── from2
│   ├── fs-extra
│   ├── fs.realpath
│   ├── fs-write-stream-atomic
│   ├── functional-red-black-tree
│   ├── function-bind
│   ├── get-caller-file
│   ├── get-own-enumerable-property-symbols
│   ├── getpass
│   ├── get-random-values
│   ├── get-stream
│   ├── get-value
│   ├── glob
│   ├── global
│   ├── global-modules
│   ├── global-prefix
│   ├── globals
│   ├── glob-base
│   ├── globby
│   ├── glob-parent
│   ├── glob-to-regexp
│   ├── graceful-fs
│   ├── growly
│   ├── gzip-size
│   ├── h2x-core
│   ├── h2x-generate
│   ├── h2x-parse
│   ├── h2x-plugin-jsx
│   ├── h2x-traverse
│   ├── h2x-types
│   ├── handlebars
│   ├── handle-thing
│   ├── harmony-reflect
│   ├── har-schema
│   ├── har-validator
│   ├── has
│   ├── has-ansi
│   ├── has-binary2
│   ├── has-cors
│   ├── has-flag
│   ├── hash-base
│   ├── hash.js
│   ├── has-symbols
│   ├── has-value
│   ├── has-values
│   ├── he
│   ├── hex-color-regex
│   ├── history
│   ├── hmac-drbg
│   ├── hoek
│   ├── hoist-non-react-statics
│   ├── homedir-polyfill
│   ├── home-or-tmp
│   ├── hoopy
│   ├── hosted-git-info
│   ├── hpack.js
│   ├── hsla-regex
│   ├── hsl-regex
│   ├── html-comment-regex
│   ├── html-encoding-sniffer
│   ├── html-entities
│   ├── html-minifier
│   ├── htmlparser2
│   ├── html-webpack-plugin
│   ├── http-deceiver
│   ├── http-errors
│   ├── http-parser-js
│   ├── http-proxy
│   ├── http-proxy-middleware
│   ├── https-browserify
│   ├── http-signature
│   ├── i
│   ├── iconv-lite
│   ├── icss-replace-symbols
│   ├── icss-utils
│   ├── identity-obj-proxy
│   ├── ieee754
│   ├── iferr
│   ├── ignore
│   ├── immer
│   ├── import-cwd
│   ├── import-fresh
│   ├── import-from
│   ├── import-local
│   ├── imurmurhash
│   ├── indexes-of
│   ├── indexof
│   ├── inflight
│   ├── inherits
│   ├── ini
│   ├── inquirer
│   ├── internal-ip
│   ├── invariant
│   ├── invert-kv
│   ├── ip
│   ├── ipaddr.js
│   ├── ip-regex
│   ├── is-absolute-url
│   ├── is-accessor-descriptor
│   ├── isarray
│   ├── is-arrayish
│   ├── is-binary-path
│   ├── is-buffer
│   ├── is-callable
│   ├── is-ci
│   ├── is-color-stop
│   ├── is-data-descriptor
│   ├── is-date-object
│   ├── is-descriptor
│   ├── is-directory
│   ├── is-dotfile
│   ├── isemail
│   ├── is-equal-shallow
│   ├── isexe
│   ├── is-extendable
│   ├── is-extglob
│   ├── is-finite
│   ├── is-fullwidth-code-point
│   ├── is-generator-fn
│   ├── is-glob
│   ├── is-number
│   ├── is-obj
│   ├── isobject
│   ├── isomorphic-fetch
│   ├── isomorphic-ws
│   ├── is-path-cwd
│   ├── is-path-in-cwd
│   ├── is-path-inside
│   ├── is-plain-object
│   ├── is-posix-bracket
│   ├── is-primitive
│   ├── is-promise
│   ├── is-regex
│   ├── is-regexp
│   ├── is-resolvable
│   ├── is-root
│   ├── isstream
│   ├── is-stream
│   ├── is-svg
│   ├── is-symbol
│   ├── istanbul-api
│   ├── istanbul-lib-coverage
│   ├── istanbul-lib-hook
│   ├── istanbul-lib-instrument
│   ├── istanbul-lib-report
│   ├── istanbul-lib-source-maps
│   ├── istanbul-reports
│   ├── is-typedarray
│   ├── is-utf8
│   ├── is-windows
│   ├── is-wsl
│   ├── jest
│   ├── jest-changed-files
│   ├── jest-config
│   ├── jest-diff
│   ├── jest-docblock
│   ├── jest-each
│   ├── jest-environment-jsdom
│   ├── jest-environment-node
│   ├── jest-get-type
│   ├── jest-haste-map
│   ├── jest-jasmine2
│   ├── jest-leak-detector
│   ├── jest-matcher-utils
│   ├── jest-message-util
│   ├── jest-mock
│   ├── jest-pnp-resolver
│   ├── jest-regex-util
│   ├── jest-resolve
│   ├── jest-resolve-dependencies
│   ├── jest-runner
│   ├── jest-runtime
│   ├── jest-serializer
│   ├── jest-snapshot
│   ├── jest-util
│   ├── jest-validate
│   ├── jest-watcher
│   ├── jest-worker
│   ├── joi
│   ├── jsbn
│   ├── jsdom
│   ├── jsesc
│   ├── js-levenshtein
│   ├── json3
│   ├── json5
│   ├── jsonfile
│   ├── jsonify
│   ├── json-parse-better-errors
│   ├── json-schema
│   ├── json-schema-traverse
│   ├── json-stable-stringify
│   ├── json-stable-stringify-without-jsonify
│   ├── json-stringify-safe
│   ├── jsprim
│   ├── js-tokens
│   ├── jsx-ast-utils
│   ├── js-yaml
│   ├── killable
│   ├── kind-of
│   ├── kleur
│   ├── last-call-webpack-plugin
│   ├── lazy-cache
│   ├── lcid
│   ├── left-pad
│   ├── leven
│   ├── levn
│   ├── loader-fs-cache
│   ├── loader-runner
│   ├── loader-utils
│   ├── load-json-file
│   ├── locate-path
│   ├── lodash
│   ├── lodash.camelcase
│   ├── lodash.memoize
│   ├── lodash._reinterpolate
│   ├── lodash.sortby
│   ├── lodash.tail
│   ├── lodash.template
│   ├── lodash.templatesettings
│   ├── lodash.uniq
│   ├── loglevel
│   ├── long
│   ├── loose-envify
│   ├── lower-case
│   ├── lru-cache
│   ├── make-dir
│   ├── makeerror
│   ├── mamacro
│   ├── map-age-cleaner
│   ├── map-cache
│   ├── map-visit
│   ├── math-random
│   ├── md5.js
│   ├── mdn-data
│   ├── media-typer
│   ├── mem
│   ├── memoize-one
│   ├── memory-fs
│   ├── merge
│   ├── merge2
│   ├── merge-deep
│   ├── merge-descriptors
│   ├── merge-stream
│   ├── methods
│   ├── micromatch
│   ├── miller-rabin
│   ├── mime
│   ├── mime-db
│   ├── mime-types
│   ├── mimic-fn
│   ├── min-document
│   ├── mini-css-extract-plugin
│   ├── minimalistic-assert
│   ├── minimalistic-crypto-utils
│   ├── minimatch
│   ├── minimist
│   ├── mississippi
│   ├── mixin-deep
│   ├── mixin-object
│   ├── mkdirp
│   ├── mobx
│   ├── mobx-localstorage
│   ├── mobx-react
│   ├── mobx-react-router
│   ├── moment
│   ├── moment-timezone
│   ├── move-concurrently
│   ├── @mrmlnc
│   ├── ms
│   ├── multicast-dns
│   ├── multicast-dns-service-types
│   ├── mute-stream
│   ├── nanomatch
│   ├── natural-compare
│   ├── negotiator
│   ├── neo-async
│   ├── nice-try
│   ├── no-case
│   ├── node-fetch
│   ├── node-forge
│   ├── node-int64
│   ├── @nodelib
│   ├── node-libs-browser
│   ├── node-notifier
│   ├── node-releases
│   ├── normalize-package-data
│   ├── normalize-path
│   ├── normalize-range
│   ├── normalize-url
│   ├── npm-run-path
│   ├── nth-check
│   ├── num2fraction
│   ├── number-is-nan
│   ├── nwsapi
│   ├── oauth-sign
│   ├── object-assign
│   ├── object.assign
│   ├── object-component
│   ├── object-copy
│   ├── object.getownpropertydescriptors
│   ├── object-hash
│   ├── object-keys
│   ├── object.omit
│   ├── object.pick
│   ├── object.values
│   ├── object-visit
│   ├── obuf
│   ├── once
│   ├── onetime
│   ├── on-finished
│   ├── on-headers
│   ├── opn
│   ├── optimist
│   ├── optimize-css-assets-webpack-plugin
│   ├── optionator
│   ├── original
│   ├── os-browserify
│   ├── os-homedir
│   ├── os-locale
│   ├── os-tmpdir
│   ├── pako
│   ├── parallel-transform
│   ├── param-case
│   ├── parse5
│   ├── parse-asn1
│   ├── parse-glob
│   ├── parse-json
│   ├── parse-passwd
│   ├── parseqs
│   ├── parseuri
│   ├── parseurl
│   ├── pascalcase
│   ├── path-browserify
│   ├── path-dirname
│   ├── path-exists
│   ├── path-is-absolute
│   ├── path-is-inside
│   ├── path-key
│   ├── path-parse
│   ├── path-to-regexp
│   ├── path-type
│   ├── pbkdf2
│   ├── p-defer
│   ├── performance-now
│   ├── p-finally
│   ├── pify
│   ├── pinkie
│   ├── pinkie-promise
│   ├── p-is-promise
│   ├── pkg-dir
│   ├── pkg-up
│   ├── p-limit
│   ├── p-locate
│   ├── pluralize
│   ├── p-map
│   ├── pn
│   ├── pnp-webpack-plugin
│   ├── portfinder
│   ├── posix-character-classes
│   ├── postcss
│   ├── postcss-attribute-case-insensitive
│   ├── postcss-calc
│   ├── postcss-color-functional-notation
│   ├── postcss-color-gray
│   ├── postcss-color-hex-alpha
│   ├── postcss-colormin
│   ├── postcss-color-mod-function
│   ├── postcss-color-rebeccapurple
│   ├── postcss-convert-values
│   ├── postcss-custom-media
│   ├── postcss-custom-properties
│   ├── postcss-custom-selectors
│   ├── postcss-dir-pseudo-class
│   ├── postcss-discard-comments
│   ├── postcss-discard-duplicates
│   ├── postcss-discard-empty
│   ├── postcss-discard-overridden
│   ├── postcss-double-position-gradients
│   ├── postcss-env-function
│   ├── postcss-flexbugs-fixes
│   ├── postcss-focus-visible
│   ├── postcss-focus-within
│   ├── postcss-font-variant
│   ├── postcss-gap-properties
│   ├── postcss-image-set-function
│   ├── postcss-initial
│   ├── postcss-lab-function
│   ├── postcss-load-config
│   ├── postcss-loader
│   ├── postcss-logical
│   ├── postcss-media-minmax
│   ├── postcss-merge-longhand
│   ├── postcss-merge-rules
│   ├── postcss-minify-font-values
│   ├── postcss-minify-gradients
│   ├── postcss-minify-params
│   ├── postcss-minify-selectors
│   ├── postcss-modules-extract-imports
│   ├── postcss-modules-local-by-default
│   ├── postcss-modules-scope
│   ├── postcss-modules-values
│   ├── postcss-nesting
│   ├── postcss-normalize-charset
│   ├── postcss-normalize-display-values
│   ├── postcss-normalize-positions
│   ├── postcss-normalize-repeat-style
│   ├── postcss-normalize-string
│   ├── postcss-normalize-timing-functions
│   ├── postcss-normalize-unicode
│   ├── postcss-normalize-url
│   ├── postcss-normalize-whitespace
│   ├── postcss-ordered-values
│   ├── postcss-overflow-shorthand
│   ├── postcss-page-break
│   ├── postcss-place
│   ├── postcss-preset-env
│   ├── postcss-pseudo-class-any-link
│   ├── postcss-reduce-initial
│   ├── postcss-reduce-transforms
│   ├── postcss-replace-overflow-wrap
│   ├── postcss-safe-parser
│   ├── postcss-selector-matches
│   ├── postcss-selector-not
│   ├── postcss-selector-parser
│   ├── postcss-svgo
│   ├── postcss-unique-selectors
│   ├── postcss-value-parser
│   ├── postcss-values-parser
│   ├── prelude-ls
│   ├── preserve
│   ├── prettier
│   ├── pretty-bytes
│   ├── pretty-error
│   ├── pretty-format
│   ├── private
│   ├── process
│   ├── process-nextick-args
│   ├── progress
│   ├── promise
│   ├── promise-inflight
│   ├── prompts
│   ├── prop-types
│   ├── proxy-addr
│   ├── prr
│   ├── pseudomap
│   ├── psl
│   ├── p-try
│   ├── public-encrypt
│   ├── pump
│   ├── pumpify
│   ├── punycode
│   ├── q
│   ├── qs
│   ├── querystring
│   ├── querystring-es3
│   ├── querystringify
│   ├── raf
│   ├── randomatic
│   ├── randombytes
│   ├── randomfill
│   ├── range-parser
│   ├── raw-body
│   ├── react
│   ├── react-app-polyfill
│   ├── react-dev-utils
│   ├── react-dom
│   ├── react-error-overlay
│   ├── react-icons
│   ├── react-is
│   ├── reactive-localstorage
│   ├── react-lifecycles-compat
│   ├── react-router
│   ├── react-router-dom
│   ├── react-sparklines
│   ├── react-spinners
│   ├── react-toastify
│   ├── react-tooltip
│   ├── react-transition-group
│   ├── react-virtualized
│   ├── readable-stream
│   ├── readdirp
│   ├── read-pkg
│   ├── read-pkg-up
│   ├── realpath-native
│   ├── recompose
│   ├── recursive-readdir
│   ├── regenerate
│   ├── regenerate-unicode-properties
│   ├── regenerator-runtime
│   ├── regenerator-transform
│   ├── regex-cache
│   ├── regex-not
│   ├── regexpp
│   ├── regexp-tree
│   ├── regexpu-core
│   ├── regjsgen
│   ├── regjsparser
│   ├── relateurl
│   ├── remove-trailing-separator
│   ├── renderkid
│   ├── repeat-element
│   ├── repeating
│   ├── repeat-string
│   ├── request
│   ├── request-promise-core
│   ├── request-promise-native
│   ├── require-directory
│   ├── require-from-string
│   ├── require-main-filename
│   ├── requires-port
│   ├── require-uncached
│   ├── resolve
│   ├── resolve-cwd
│   ├── resolve-dir
│   ├── resolve-from
│   ├── resolve-pathname
│   ├── resolve-url
│   ├── restore-cursor
│   ├── ret
│   ├── rgba-regex
│   ├── rgb-regex
│   ├── rimraf
│   ├── ripemd160
│   ├── rsvp
│   ├── run-async
│   ├── run-queue
│   ├── rxjs
│   ├── safe-buffer
│   ├── safer-buffer
│   ├── safe-regex
│   ├── sane
│   ├── sass-loader
│   ├── sax
│   ├── saxes
│   ├── scatterjs-core
│   ├── scatterjs-plugin-eosjs2
│   ├── scheduler
│   ├── schema-utils
│   ├── select-hose
│   ├── selfsigned
│   ├── semver
│   ├── send
│   ├── serialize-javascript
│   ├── serve-index
│   ├── serve-static
│   ├── set-blocking
│   ├── setimmediate
│   ├── setprototypeof
│   ├── set-value
│   ├── sha.js
│   ├── shallow-clone
│   ├── shebang-command
│   ├── shebang-regex
│   ├── shell-quote
│   ├── shellwords
│   ├── signal-exit
│   ├── simple-swizzle
│   ├── sisteransi
│   ├── slash
│   ├── slice-ansi
│   ├── snapdragon
│   ├── snapdragon-node
│   ├── snapdragon-util
│   ├── socket.io-client
│   ├── socket.io-parser
│   ├── sockjs
│   ├── sockjs-client
│   ├── source-list-map
│   ├── source-map
│   ├── source-map-resolve
│   ├── source-map-support
│   ├── source-map-url
│   ├── spdx-correct
│   ├── spdx-exceptions
│   ├── spdx-expression-parse
│   ├── spdx-license-ids
│   ├── spdy
│   ├── spdy-transport
│   ├── split-string
│   ├── sprintf-js
│   ├── sshpk
│   ├── ssri
│   ├── stable
│   ├── stack-utils
│   ├── static-extend
│   ├── statuses
│   ├── stealthy-require
│   ├── stream-browserify
│   ├── stream-each
│   ├── stream-http
│   ├── stream-shift
│   ├── string_decoder
│   ├── stringify-object
│   ├── string-length
│   ├── string-width
│   ├── strip-ansi
│   ├── strip-bom
│   ├── strip-comments
│   ├── strip-eof
│   ├── strip-json-comments
│   ├── styled-components
│   ├── stylehacks
│   ├── style-loader
│   ├── stylis
│   ├── stylis-rule-sheet
│   ├── supports-color
│   ├── svgo
│   ├── @svgr
│   ├── symbol-observable
│   ├── symbol-tree
│   ├── table
│   ├── tapable
│   ├── terser
│   ├── terser-webpack-plugin
│   ├── test-exclude
│   ├── text-encoding
│   ├── text-table
│   ├── throat
│   ├── through
│   ├── through2
│   ├── thunky
│   ├── timers-browserify
│   ├── timsort
│   ├── tmp
│   ├── tmpl
│   ├── to-array
│   ├── to-arraybuffer
│   ├── to-fast-properties
│   ├── to-object-path
│   ├── topo
│   ├── to-regex
│   ├── to-regex-range
│   ├── tough-cookie
│   ├── tr46
│   ├── trim-right
│   ├── tryer
│   ├── tsconfig-paths
│   ├── tsconfig-paths-webpack-plugin
│   ├── tslib
│   ├── tslint
│   ├── tslint-config-standard
│   ├── tslint-eslint-rules
│   ├── tslint-loader
│   ├── tslint-react
│   ├── tsutils
│   ├── tty-browserify
│   ├── tunnel-agent
│   ├── tweetnacl
│   ├── type-check
│   ├── typedarray
│   ├── type-is
│   ├── @types
│   ├── typescript
│   ├── typescript-plugin-styled-components
│   ├── ua-parser-js
│   ├── uglify-js
│   ├── uglifyjs-webpack-plugin
│   ├── unicode-canonical-property-names-ecmascript
│   ├── unicode-match-property-ecmascript
│   ├── unicode-match-property-value-ecmascript
│   ├── unicode-property-aliases-ecmascript
│   ├── union-value
│   ├── uniq
│   ├── uniqs
│   ├── unique-filename
│   ├── unique-slug
│   ├── universalify
│   ├── unpipe
│   ├── unquote
│   ├── unset-value
│   ├── upath
│   ├── upper-case
│   ├── uri-js
│   ├── urix
│   ├── url
│   ├── url-loader
│   ├── url-parse
│   ├── use
│   ├── util
│   ├── utila
│   ├── util-deprecate
│   ├── util.promisify
│   ├── utils-merge
│   ├── uuid
│   ├── validate-npm-package-license
│   ├── value-equal
│   ├── vary
│   ├── vendors
│   ├── verror
│   ├── vm-browserify
│   ├── w3c-hr-time
│   ├── w3c-xmlserializer
│   ├── walker
│   ├── warning
│   ├── watch
│   ├── watchpack
│   ├── wbuf
│   ├── @webassemblyjs
│   ├── webidl-conversions
│   ├── webpack
│   ├── webpack-dev-middleware
│   ├── webpack-dev-server
│   ├── webpack-log
│   ├── webpack-manifest-plugin
│   ├── webpack-sources
│   ├── websocket-driver
│   ├── websocket-extensions
│   ├── whatwg-encoding
│   ├── whatwg-fetch
│   ├── whatwg-mimetype
│   ├── whatwg-url
│   ├── which
│   ├── which-module
│   ├── wordwrap
│   ├── workbox-background-sync
│   ├── workbox-broadcast-cache-update
│   ├── workbox-build
│   ├── workbox-cacheable-response
│   ├── workbox-cache-expiration
│   ├── workbox-core
│   ├── workbox-google-analytics
│   ├── workbox-navigation-preload
│   ├── workbox-precaching
│   ├── workbox-range-requests
│   ├── workbox-routing
│   ├── workbox-strategies
│   ├── workbox-streams
│   ├── workbox-sw
│   ├── workbox-webpack-plugin
│   ├── worker-farm
│   ├── wrap-ansi
│   ├── wrappy
│   ├── write
│   ├── write-file-atomic
│   ├── ws
│   ├── xmlchars
│   ├── xmlhttprequest-ssl
│   ├── xml-name-validator
│   ├── xregexp
│   ├── xtend
│   ├── @xtuc
│   ├── y18n
│   ├── yallist
│   ├── yargs
│   ├── yargs-parser
│   └── yeast
├── package.json
├── package-lock.json
├── public
│   ├── android-chrome-192x192.png
│   ├── android-chrome-256x256.png
│   ├── apple-touch-icon.png
│   ├── asset-manifest.json
│   ├── browserconfig.xml
│   ├── chart
│   ├── favicon-16x16.png
│   ├── favicon-32x32.png
│   ├── favicon.ico
│   ├── fonts
│   ├── images
│   ├── index.html
│   ├── manifest.json
│   ├── mstile-150x150.png
│   ├── safari-pinned-tab.svg
│   └── site.webmanifest
├── README.md
├── scripts
│   ├── build.js
│   ├── start.js
│   └── test.js
├── src
│   ├── index.tsx
│   ├── localization
│   ├── Pages
│   ├── react-app-env.d.ts
│   ├── serviceWorker.ts
│   └── stores
├── tsconfig.json
└── tslint.json
mjbvz commented 5 years ago

You can send the logs to matb at microsoft

One other idea is to try setting explicit includes or excludes in your tsconfig to ensure that only files you want are picked up as part of the project. For example:

{
     "compilerOptions": {...},
     "include": [
          "src/**/*"
     ]
}

You can see the full list of files included in your project in the logs too. They are printed in sections that look like:

Info 1626 [11:59:52.378] Project '/Users/matb/projects/vscode-stuff/tsconfig.json' (Configured) 0
Info 1626 [11:59:52.410]    Files (74)
    /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es5.d.ts
    /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es2015.d.ts
    /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es2016.d.ts
    /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es2017.d.ts
    /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es2018.d.ts
    /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.dom.d.ts
    /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.dom.iterable.d.ts
    /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.webworker.importscripts.d
....
acoutts commented 5 years ago

I was finally able to resolve it. The culprit was the @types/styled-components package in my project and a recent change to typescript: https://github.com/Microsoft/TypeScript/issues/30663#issuecomment-480462812

I resolved the issue by upgrading to typescript 3.5 and installing the latest version of @types/styled-components (v4.1.14), and making sure VSCode is using tsc 3.5 - lightning fast again!

sikemausa commented 5 years ago

@acoutts You are a star, I tried to solve this for forever. Upgrading @types/styled-components solved this issue for me as well. Thank you!