让 VSCode 更轻量
VSCode 是一款非常出色的代码编辑器,甚至可以说它几乎就是一个 IDE,甚至比 IDE 更好。但在大型项目中,这会占用大量的内存和 CPU。这不仅仅与 VSCode 有关,还与它的大多数扩展有关。VSCode 的扩展很棒,是迄今为止最好的。但这些扩展是用 JS 为 Nodejs 编写的,因此它们占用大量资源,但效率很高,这并不奇怪。人们不知不觉地将这个问题归咎于 VSCode。虽然大多数情况下这不会引起太大的问题。但在大型项目中,这个小问题会变得更加严重,因为大多数人没有 AMD Thread Ripper、配备 16GB RAM 的三星 NVMe SSD 和 RTX3090。
让我们找出资源占用率过高的原因并解决它们
避免文件监视
Visual Studio Code 的自动补全或智能感知实际上使用了通用 LSP(语言服务器协议)包,其中包含一些文件监视器。该包会使用其他特定语言的包来监视每个文件的类型匹配或智能感知。当然,当你的项目规模较小时,这样做完全没问题。但是,如果你的项目是这样的:
哎呀,现在你讨厌 VSCode 了,但别再讨厌了。这不是 VSCode 的错。VSCode 必须监视这些文件,否则它无法让你舒适地编写代码。虽然它试图给你更好的体验,但有时也会做得过头。这会导致内存和 CPU 占用率过高。让我们来解决这个问题:
转到设置并单击位于标签栏中窗口右上角的文件编辑图标。
现在,通过以下代码可以从文件观察器中排除不重要且从未使用过的文件和文件夹。
//Add following lines of code to exclude the files & folders which aren't important for watchers to look for changes... | |
{ | |
//exludes fies & folders in search indexing | |
"search.exclude": { | |
"**/node_modules": true, | |
"**/bower_components": true, | |
"**/env": true, | |
"**/venv": true | |
}, | |
//exludes fies & folders for watcher service | |
"files.watcherExclude": { | |
"**/.git/objects/**": true, | |
"**/.git/subtree-cache/**": true, | |
"**/node_modules/**": true, | |
"**/env/**": true, | |
"**/venv/**": true, | |
"env-*": true | |
}, | |
} |
settings.json
您也可以在工作区级别执行此操作。只需在项目根目录下的文件夹中创建一个即可.vscode
。如果项目规模变大,您也可以临时添加更多文件或文件夹,因为您可能不需要所有嵌套的文件和文件夹。因此,您可以只添加那些您从未动过的项目文件夹,这样您就可以轻松地完成剩余的开发工作……
您还可以禁用一些包含文件监视功能的扩展程序。以下是一些似乎使用了文件监视功能的扩展程序列表(我不太确定):
- ESLint
- TSLint
- Apollo GraphQL
- 待办事项树
- 书签
- 代码拼写检查器(不确定)
- 模板字符串转换器(JavaScript/Typescript/JSX/TSX)
- 实时服务器
- 实时 Sass 编译器
- 编译器英雄
- 打字稿之神
- Git镜头
- 镖
- 扑
我列出了一些我在使用过程中遇到的扩展。由于我本人就熟悉 JavaScript/Typescript/Dart,所以大部分扩展都与它们相关。不过,其他扩展,例如 Rust、rust-analyzer 等,也与上述列表类似。
禁用工作区不需要的扩展
我安装了超过 35 个扩展。但大多数时候,我不需要在一个项目中使用所有扩展,因为我同时处理多种类型的项目。您可以为特定工作区启用/禁用扩展。例如,在开发 React 或 Nodejs 服务器时,您不需要 Flutter/Dart,反之亦然。因此,您可以只为该工作区禁用它们。但别忘了保存 VS Code 工作区。
禁用@builtin
对项目堆栈不重要的扩展也可以使 VSCode 更轻量。虽然大多数情况下这些扩展甚至不会由 VSCode 的扩展宿主启动,因为 VSCode 只有在需要时才会启动扩展。但仍然可以为工作区禁用一些扩展:
- 除了你的堆栈之外的所有语言基础知识
- Grunt、Gulp 和 Jake 支持 VSCode(三个独立的扩展)
- 节点调试(Lagecy)
你可以在 VSCode 的扩展选项卡中搜索@builtin
标签来执行此操作。它会显示所有内置扩展
关闭仅限 Typescript 项目的自动类型获取
如果您的项目仅使用 TypeScript,请禁用 VSCode 的自动typeAcquisition 功能。它通过下载@types/<package-name>
node_module 的类型定义来提供自动补全功能,从而帮助编写 JavaScript。但是 TypeScript 需要类型定义,因此大多数情况下您需要通过 npm 为 node_module 安装类型。因此,此功能已过时。
要关闭typeAcquisition
,请转到 vscode 的设置并搜索它,然后取消选中该typeAcquisition
属性