ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

vscode团队代码风格统一:用 TaoToken 统一 ESLint/Prettier/Vetur 配置骨架

vscode团队代码风格统一:用 TaoToken 统一 ESLint/Prettier/Vetur 配置骨架 1. 多人协作下 VSCode 前端代码风格为什么会漂移团队从 3 个人扩到 10 个人之后代码 review 里最常出现的不是逻辑问题而是「你这行尾怎么有分号」「缩进怎么是 4 个空格」「template 里属性换行规则又变了」。这类问题单看很小但累积起来会让 git diff 噪音暴涨review 效率直线下降。核心原因其实就三个每个人的 VSCode 本地设置不同、格式化工具各管一段互不认账、以及没有一份能跟着仓库走的配置骨架。我试过让所有人手动对齐设置结果两周后又漂回去了。真正有效的做法是把配置写进仓库让 VSCode 打开项目时自动读取.vscode/settings.json同时用 ESLint Prettier Vetur 分工覆盖 js/vue/html/css 这几类文件。ESLint 负责 js 和 vue 的逻辑与风格校验Prettier 负责 html/css/less/scss 的排版Vetur 只做 Vue 语法提示、把格式化权交给 ESLint避免两个格式化器互相打架。这套骨架适合任何 3 人以上的前端团队尤其是 Vue2/Vue3 项目。下面我会给出可直接复制的配置文件并演示保存自动格式化和提交前校验两个验证动作。如果你在配置过程中需要统一管理团队用的模型调用凭证可以顺带了解下 TaoToken 的 API Keys 管理方式它和代码风格统一是两条并行线互不干扰。2. 前置准备TaoToken 与工具链的定位在动手写配置之前先把工具链的职责边界理清楚否则后面很容易出现「保存后格式又变回去」的循环。ESLint 是 npm 依赖负责在编辑器和命令行里报 error/warningPrettier 既是 npm 依赖也是 VSCode 插件负责排版Vetur 是 VSCode 插件只用来做 Vue 语法高亮和提示。三者通过eslint-config-prettier和eslint-plugin-prettier桥接让 Prettier 的规则以 ESLint 规则的形式生效。TaoToken 在这里的角色是团队统一的模型调用入口。当你的项目里接了 AI 辅助编码、代码补全或 review 机器人时团队需要一份统一的 API Key 和调用配置避免每个人各接各的。你可以先在 TaoToken 控制台创建一个团队专用的 Key然后在项目里通过环境变量注入这样代码风格配置和模型调用配置就都跟着仓库走了。控制台地址是 https://taotoken.net/console API 端点是 https://taotoken.net/api 注意 API 地址不带任何查询参数。安装依赖这一步建议直接写进package.json的 devDependencies让新成员 clone 后npm install就能拿到全部工具npm install --save-dev eslint eslint-config-airbnb-base eslint-config-prettier eslint-plugin-import eslint-plugin-vue eslint-plugin-prettier prettierVSCode 插件则需要每个人手动装三个ESLint、Prettier - Code formatter、Vetur。插件装好后仓库里的.vscode/settings.json会自动生效不需要每个人再点设置。3. 可复制的配置骨架从 editorconfig 到 settings.json这一节是全文的核心所有配置都可以直接复制到项目根目录。建议按.editorconfig→.eslintrc.js→.prettierrc.js→.vscode/settings.json的顺序创建每一层负责不同的范围。3.1 .editorconfig 统一基础字符与缩进.editorconfig是最底层管的是字符集、换行符、缩进这些编辑器层面的东西优先级高于 VSCode 个人设置。放在项目根目录VSCode 装了 EditorConfig 插件后自动读取root true [*] charset utf-8 indent_style space indent_size 2 end_of_line lf insert_final_newline true trim_trailing_whitespace true [*.md] insert_final_newline false trim_trailing_whitespace false这里indent_size 2和前端主流规范一致end_of_line lf避免 Windows 和 Mac 协同时出现整文件 diff。Markdown 文件特意关掉行尾空格清理因为 Markdown 里两个空格代表换行清掉会改变渲染结果。3.2 .eslintrc.js 定义 js/vue 规则ESLint 配置用extends继承 airbnb-base、vue/essential 和 prettier/recommended 三套规则再用rules覆盖团队自定义项。下面这份是精简后的骨架保留了最常用的规则完整版可以按需增删module.exports { extends: [ airbnb-base, plugin:vue/essential, plugin:prettier/recommended ], rules: { prettier/prettier: [ error, { singleQuote: true, trailingComma: none, bracketSpacing: true, endOfLine: auto } ], no-undef: 2, no-unused-vars: 1, no-console: 0, no-debugger: process.env.NODE_ENV production ? 2 : 0, no-var: 1, prefer-const: 1, prefer-arrow-callback: 1, object-shorthand: 1, vue/require-v-for-key: 2, vue/no-async-in-computed-properties: 1, vue/no-side-effects-in-computed-properties: 1, import/no-unresolved: 0, import/extensions: 0, import/prefer-default-export: 1 } };no-undef设为 2 是因为未声明变量在运行时必报错必须拦住。no-unused-vars设为 1 而不是 2是因为开发阶段常有临时变量警告即可。vue/require-v-for-key设为 2因为 v-for 缺 key 会导致渲染复用错误属于硬性 bug。3.3 .prettierrc.js 管排版Prettier 配置和 ESLint 里的prettier/prettier规则要保持一致否则会出现「ESLint 说对、Prettier 说错」的矛盾。推荐把规则集中写在.prettierrc.jsESLint 那边只引用module.exports { printWidth: 80, tabWidth: 2, useTabs: false, singleQuote: true, semi: true, trailingComma: es5, bracketSpacing: true };printWidth: 80是社区默认值超过就换行。trailingComma: es5表示在 ES5 合法的位置加尾逗号比如对象和数组函数参数不加。这样 git diff 时新增一行不会连带修改上一行的逗号。3.4 .vscode/settings.json 让保存即格式化这份配置是团队统一的关键它让 VSCode 在保存文件时自动调用 ESLint 修复 js/vue同时关闭 Vetur 对 vue 文件的格式化避免和 ESLint 冲突{ editor.tabSize: 2, editor.formatOnSave: false, eslint.validate: [ javascript, javascriptreact, { language: vue, autoFix: true } ], vetur.format.defaultFormatter.css: none, vetur.format.defaultFormatter.html: none, vetur.format.defaultFormatter.js: none, vetur.format.defaultFormatter.less: none, vetur.format.defaultFormatter.postcss: none, vetur.format.defaultFormatter.scss: none, vetur.format.defaultFormatter.ts: none, [javascript]: { editor.defaultFormatter: esbenp.prettier-vscode }, [vue]: { editor.defaultFormatter: dbaeumer.vscode-eslint } }注意editor.formatOnSave设为 false因为 vue 文件的格式化交给 ESLint 的 autoFix而不是 VSCode 的通用格式化。[vue]的 defaultFormatter 指向 ESLint 插件这样保存 vue 文件时走的是 ESLint 规则链。4. 验证请求保存自动格式化与提交前校验配置写完不算完必须验证两个动作真的生效。第一个是保存自动格式化第二个是提交前校验。4.1 验证保存自动格式化新建一个test.vue故意写乱格式template div classbox span v-foritem in list{{item}}/span /div /template script export default { data(){ return{ list:[1,2,3] } } } /script按 CtrlS 保存后如果配置生效文件会变成template div classbox span v-foritem in list :keyitem{{ item }}/span /div /template script export default { data() { return { list: [1, 2, 3] }; } }; /script缩进变成 2 空格、属性间多余空格被清理、v-for 自动补了 key 提示、对象冒号后加了空格。如果保存后没变化先检查 VSCode 右下角是否显示 ESLint 已启用再确认.vscode/settings.json没有语法错误。4.2 验证提交前校验保存格式化只覆盖编辑器内操作命令行提交时还需要一道闸。在package.json里加 lint 脚本{ scripts: { lint: eslint --ext .js,.vue src, lint:fix: eslint --ext .js,.vue src --fix } }然后跑一次npm run lint如果代码里有未使用变量或 v-for 缺 key会输出类似/path/src/test.vue 3:5 warning item is defined but never used no-unused-vars 3:5 error Elements in iteration expect to have v-bind:key vue/require-v-for-keyerror级别会导致命令退出码非 0配合 husky 的 pre-commit 钩子就能拦住不合规提交。husky 配置这里不展开核心是让npm run lint成为 CI 和本地提交的必过项。5. 本篇常见错排查配置过程中最容易踩的坑集中在格式化冲突和插件识别上下面列几个高频问题。保存后格式没变或者变了一半又弹回去。通常是 Vetur 和 ESLint 同时想格式化 vue 文件。检查.vscode/settings.json里vetur.format.defaultFormatter.*是否都设为none以及[vue]的 defaultFormatter 是否指向 ESLint。如果还不行在 VSCode 命令面板执行Developer: Reload Window重载。ESLint 报Definition for rule prettier/prettier was not found。说明eslint-plugin-prettier没装或版本不匹配。确认package.jsondevDependencies 里有eslint-plugin-prettier和eslint-config-prettier然后删掉node_modules重新npm install。Prettier 和 ESLint 规则打架保存后反复横跳。检查.prettierrc.js和.eslintrc.js里prettier/prettier的选项是否一致。比如.prettierrc.js写singleQuote: trueESLint 里却写singleQuote: false就会互相覆盖。统一以.prettierrc.js为准ESLint 里只保留引用。Windows 成员提交后整文件 diff。是换行符问题。确认.editorconfig里end_of_line lf并且 git 配置core.autocrlf设为inputMac/Linux或falseWindows 配合 editorconfig。可以在仓库根目录加.gitattributes强制* textauto eollf。TaoToken API 调用返回 401。如果你在项目里接了模型调用检查环境变量里的 Key 是否从控制台正确复制以及请求头是否带了Authorization: Bearer key。API 端点是 https://taotoken.net/api 不要拼错路径。团队协作时建议把 Key 放在.env.local并加入.gitignore只把.env.example提交到仓库。6. 把配置沉淀成团队资产代码风格统一这件事配置只是一半另一半是让配置跟着仓库走、跟着 CI 走。.vscode/settings.json提交后新成员 clone 下来装好三个插件就能直接开工不需要口头传达任何规则。ESLint 的npm run lint接进 CI 后任何不合规的 PR 都会被拦下review 里就只剩逻辑讨论了。如果你团队同时在用 AI 辅助编码建议把模型调用的 Key 管理也纳入同一套流程。TaoToken 的 API Keys 页面可以创建多个 Key 并按项目区分接入文档里有各语言的调用示例。需要长期跑编码 Agent 的团队可以看下 Coding Plan按用量规划比临时申请更省心。配置骨架先落地模型调用的事后面按需接上就行。
返回列表