前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版

VS Code 配置越堆越乱?一套能跟团队共享的整理方法

首页2018-02-02 11:40:43Tools
VS Code开发工具前端工程化

文章首发于: https://feinterview.poetries.top/blog/vsc-config

VS Code 用久之后很容易变成另一种状态,扩展装了几十个,settings.json 从旧电脑复制到新电脑,保存时三个格式化器轮流抢活。编辑器确实更顺手了,可一旦换项目或换机器,很多配置已经说不清为什么存在。

我自己的整理原则是把个人偏好和项目约束分开。字体、主题、光标属于个人设置;格式化器、文件排除、语言覆盖更适合工作区设置。扩展只留下能解释用途的那一批,失效字段及时删除。这样配置才是工具,不是历史遗迹。

在本篇文章中,我们将从浅入深,和大家一起学习以下知识:

  • 用户设置、工作区设置与语言设置的覆盖关系
  • 一份前端开发可直接使用的基础配置
  • 扩展怎样按能力分类,避免重复安装
  • 保存格式化冲突应该如何排查
  • Fira Code 字体与连字怎样启用
  • 哪些配置适合提交到仓库
  • 换电脑时如何使用 Settings Sync

# 一、先分清三层设置

VS Code 的用户设置对所有窗口生效,工作区设置只对当前项目生效,并且会覆盖用户设置。打开单文件夹项目时,工作区配置位于 .vscode/settings.json;多根工作区则写在 .code-workspace 文件中。

语言专属配置会继续覆盖通用配置。例如团队希望 JavaScript 用 Prettier,Markdown 不在保存时格式化,可以这样写:

{
  "editor.formatOnSave": true,
  "[javascript][typescript][typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[markdown]": {
    "editor.formatOnSave": false
  }
}
@前端进阶之旅: 代码已经复制到剪贴板

字体大小、主题和侧边栏位置不要提交到项目,它们不影响产物。默认格式化器、文件关联和测试目录排除可以提交,因为这些配置能减少团队成员保存后的无意义 diff。

# 二、常用扩展先按用途去重

  • Auto Close Tag (自动关闭HTML标签)
  • Auto Rename Tag (HTML标签自动改名)
  • Babel ES6/ES7
  • Beautify css/sass/scss/less
  • Brackets Light (主题)
  • Complete JSDoc Tags (js文档注释提示)
  • Git History (查看git提交记录)
  • HTML CSS Support (HTML中提示可用的class)
  • npm Intellisense (提示可以require的模块名称)
  • One Dark Theme (主题)
  • Path Intellisense (路径补全)
  • Reactjs code snippets (reactjs代码提示)
  • Sass
  • SCSS IntelliSense Preview SCSS智能提醒,配置强大
  • Sublime Babel
  • VSCode Great Icons (文件图标)
  • vscode-icons (文件图标)
  • Beautify - HTML、CSS、JS、JSON语法高亮
  • Guides - 代码对齐辅助线
  • OneDark主题
  • JavaScript (ES6) Code Snippets (代码片段插件)
  • Project Manager (项目管理器插件) 简单的项目管理器,可以在你的编辑器中快速切换项目
  • Sync Settings (设置同步插件)在电脑上移植你的插件和设置是轻而易举的事
  • Git History (Git 历史记录插件) 可视化的 Git 历史记录插件
  • Document This (JSDoc注释插件)
  • npm Intellisense (npm 模块导入插件)
  • Align (代码对齐插件)
  • amVim (vim 插件)
  • Faker 可以生成随机的名称,地址,图像,电话号码
  • Color Info 颜色信息及转换
  • SVG Viewer SVG 预览
  • TODO Highlight TODO 高亮
  • Minify 代码压缩
  • Regex Previewer 正则表达式预览
  • File Tree View 提供几个常见编程语言的函数或状态的树集合展示,可以快速点击跳转!
  • JavaScript Test Runner Preview 快速执行单元测试,支持 Mocha 和 Jest
  • NPM-Scripts 在侧边栏可视化执行 npm 命令(项目内的 package.json)
  • colorize会给颜色代码增加一个当前匹配代码颜色的背景
  • vscode-fake------生成各种假数据类型。(姓名,电话)
  • vscode-CSS Peek------class类定义跳转
  • vscode-Git Lens-----增强vscode的git管理工具
  • vscode-Live Server-----http服务器(相当于使用nodejs的http-server )
  • EditorConfig for VS Code EditorConfig 插件
  • Emoji 在代码中输入emoji
  • File Peek 根据路径字符串,快速定位到文件
  • Font-awesome codes for html FontAwesome提示代码段
  • Guides 高亮缩进基准线
  • JavaScript (ES6) code snippets ES6语法代码段
  • language-stylus Stylus语法高亮和提示
  • Lodash Lodash代码段
  • Prettify JSON 格式化JSON
  • Test Spec Generator 测试用例生成(支持chai、should、jasmine)
  • vetur 目前比较好的Vue语法高亮
  • cssrem css值转rem插件
  • polacode 代码截图工具

这份清单来自早期使用记录,其中不少能力已经被 VS Code 内置,或者被语言官方扩展替代。现在挑扩展时我会先问三个问题,它有没有与内置能力重复、项目是否真的使用对应语言、维护状态是否正常。

同类扩展只留一个。图标主题装一个就够,代码片段不要同时装三套,格式化也应为每种语言指定唯一的 editor.defaultFormatter。扩展越多,启动、索引和冲突排查的成本越高。

更稳的分组方式如下:

  • 语言能力:项目实际使用的 Vue、Python、Rust 等官方或主流语言扩展
  • 代码质量:ESLint、Stylelint、Prettier
  • Git:内置 Source Control 不够时再加 GitLens
  • 运行调试:项目需要的测试适配器、容器或远程开发扩展
  • 体验增强:主题、图标、路径补全,严格控制数量

# 三、一份可维护的基础配置

{
    "workbench.activityBar.visible": true,
    "workbench.iconTheme": "vscode-icons",
    "window.menuBarVisibility": "default",
    "editor.minimap.enabled": true,
    "cssrem.rootFontSize": 75,
    "workbench.colorTheme": "Atom One Dark",
    "editor.fontSize": 16,
    "liveServer.settings.donotShowInfoMsg": true,
    "editor.cursorStyle": "block",
    "editor.fontFamily": "Fira Code",
    "editor.fontLigatures": true,
    "editor.lineHeight": 24,
    "editor.lineNumbers": "on",
    "editor.rulers": [
        120
    ],
    "auto-close-tag.SublimeText3Mode": true,
    "vsicons.dontShowNewVersionMessage": true,
    "[javascript]": {
        
    },
    "window.zoomLevel": 0,
    "javascript.implicitProjectConfig.experimentalDecorators": true,
    "Scss2Css.compileAfterSave": true,
    "fileheader.Author": "poetryxie",
    "fileheader.LastModifiedBy": "poetryxie",
    "todohighlight.isEnable": false,
    "workbench.startupEditor": "newUntitledFile",
    "explorer.confirmDragAndDrop": false,
    "gitlens.advanced.messages": {
        "suppressCommitHasNoPreviousCommitWarning": false,
        "suppressCommitNotFoundWarning": false,
        "suppressFileNotUnderSourceControlWarning": false,
        "suppressGitVersionWarning": false,
        "suppressLineUncommittedWarning": false,
        "suppressNoRepositoryWarning": false,
        "suppressUpdateNotice": false,
        "suppressWelcomeNotice": true
    }
}
@前端进阶之旅: 代码已经复制到剪贴板

旧配置里有些字段来自已卸载扩展,有些字段已经改名。直接复制整份配置很容易出现「Unknown Configuration Setting」。更建议从下面这份基础配置开始,再按当前项目加字段:

{
  "editor.fontSize": 16,
  "editor.lineHeight": 24,
  "editor.fontFamily": "Fira Code, Menlo, Monaco, monospace",
  "editor.fontLigatures": true,
  "editor.minimap.enabled": true,
  "editor.rulers": [100],
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },
  "files.insertFinalNewline": true,
  "files.trimTrailingWhitespace": true,
  "[markdown]": {
    "files.trimTrailingWhitespace": false
  },
  "[javascript][typescript][javascriptreact][typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}
@前端进阶之旅: 代码已经复制到剪贴板

source.fixAll.eslint 使用 explicit 后,显式保存会执行 ESLint 修复,Auto Save 不会频繁改写文件。Markdown 关闭行尾空格清理,是为了保留可能用于硬换行的两个空格。

这里有个坑要注意。工作区已经配置 .editorconfig 或 Prettier 时,VS Code 自身的 tabSize、引号和换行配置可能被覆盖。看到保存结果不符合 settings.json,不要马上重装扩展,先检查仓库里的格式化配置。

# 四、保存时三个工具打架怎么查

fe
  • 一、先分清三层设置
  • 二、常用扩展先按用途去重
  • 三、一份可维护的基础配置
  • 四、保存时三个工具打架怎么查
  • 五、字体与连字只是个人偏好
  • 六、项目里应该提交哪些 VS Code 文件
  • 七、换机器优先用 Settings Sync
  • 总结
  • 参考

← 梳理Immutable常用API 从fromJS到merge的完整清单JavaScript工程项目最佳实践完整清单 →