prettier-eslint超详细集成指南:从安装到自动格式化,前端代码规范自动化配置全流程

prettier-eslint超详细集成指南:从安装到自动格式化,前端代码规范自动化配置全流程 一

文章目录CloseOpen

为什么Prettier+ESLint必须组队?单独用的坑我踩过

先问你个问题:你觉得“代码规范”和“代码格式”是一回事吗?之前我也以为差不多,直到带团队时踩了个大坑——当时我们只用ESLint,以为开了fix就能搞定一切。结果呢?成员写的代码虽然没有语法错误,但格式还是五花八门:有人习惯行尾加分号,有人不加;有人喜欢箭头函数参数换行,有人挤在一行。后来才发现,ESLint的格式化能力其实很有限,它更擅长检查“var声明变量”“未使用的函数参数”这类代码质量问题,而像缩进、换行、引号风格这些纯格式问题,它的规则少得可怜,还得手动一个个配。

那只用Prettier行不行?我试过!去年帮一个React小团队配置时,他们图省事只装了Prettier,结果上线后被测试提了一堆“低级错误”:有个组件里漏写了return,Prettier格式化时完全没提示——因为它只管格式不管逻辑啊!Prettier的强项是统一格式,比如强制所有文件使用2个空格缩进、单引号包裹字符串,但对“是否使用了let却没修改的变量”“React Hook调用顺序错误”这类问题,它根本不关心。

这俩工具单独用就像“左手拿叉右手拿刀却各吃各的”,必须让它们协作才行。Prettier官方文档里明确说:“ESLint负责代码质量,Prettier负责代码格式,两者结合才能实现完整的代码规范自动化。”而集成的关键,就是解决它们可能“打架”的问题——比如ESLint有个quotes规则要求用双引号,Prettier却强制单引号,这时候就得让它们“约法三章”:格式问题听Prettier的,质量问题听ESLint的。

给你看张表,你就明白它俩的分工了:

工具 核心功能 典型规则举例 单独使用的痛点
ESLint 代码质量检查为主,格式化为辅 禁止未使用变量、强制使用const、检查条件语句漏洞 格式规则少,配置复杂,团队成员格式规则难统一
Prettier 专注代码格式化,不关心质量 统一缩进为2空格、强制单引号、函数括号后加空格 不检查语法错误,可能格式化出“好看但有bug”的代码

现在你该懂了吧?Prettier+ESLint不是“选一个”,而是“必须都要”。就像装修房子,ESLint帮你检查水电线路有没有问题,Prettier负责把墙面刷平整、家具摆整齐——缺了哪个,住进去都别扭。

从安装到“保存即格式化”,超详细步骤(附框架适配代码)

接下来进入实操环节。别担心,哪怕你是刚接触工程化的新手,跟着下面的步骤走,15分钟就能配好。我会从“环境准备”讲到“自动格式化触发”,连每个配置文件里的参数为啥这么写都给你标出来,最后再给你React/TS项目的适配模板——这些代码都是我在三个不同技术栈项目里验证过的,直接复制就能用。

第一步:先把“工具包”配齐,依赖安装避坑指南

首先得确保你电脑里有Node.js(14.0.0及以上版本,太低会有兼容性问题),然后打开终端,进入你的项目根目录。这里我推荐用npm安装(yarn也行,命令类似),核心要装四个包:

npm install save-dev prettier eslint eslint-config-prettier eslint-plugin-prettier

别嫌包多,每个都有它的作用:

  • prettier:主角之一,负责代码格式化
  • eslint:另一个主角,负责代码质量检查
  • eslint-config-prettier关键!它会关掉ESLint里所有和Prettier冲突的规则(比如ESLint的indent和Prettier的缩进规则打架时,就听Prettier的)
  • eslint-plugin-prettier:把Prettier的格式化规则“伪装”成ESLint规则,这样运行eslint fix时就能同时触发Prettier格式化
  • 如果你的项目用了React,记得额外装eslint-plugin-react;用TypeScript的话,还得加@typescript-eslint/eslint-plugin@typescript-eslint/parser——这些框架适配的包我会在后面单独讲。

    第二步:写配置文件,3个文件让工具“听话”

    工具装好了,现在得告诉它们“怎么干活”。需要在项目根目录创建三个文件,我会给你模板,你直接复制过去,根据团队习惯改几个参数就行。

  • .prettierrc:告诉Prettier“什么是好看的代码”
  • 这个文件定义格式化规则,比如用几个空格缩进、用单引号还是双引号。新建文件后粘贴下面的配置:

    {
    

    "printWidth": 100, // 一行代码最多100个字符,超过就换行(太长看着累)

    "tabWidth": 2, // 用2个空格代替Tab缩进(前端主流习惯)

    "useTabs": false, // 不用Tab缩进(避免不同编辑器显示不一致)

    "singleQuote": true, // 字符串用单引号(JSX里会自动用双引号,别担心)

    "semi": true, // 行尾加分号(避免ASI自动分号插入的坑)

    "trailingComma": "es5", // 对象最后一个属性加逗号(比如{ a: 1, b: 2, })

    "bracketSpacing": true // 对象大括号中间留空格,比如{ foo: bar }而不是{foo: bar}

    }

    这些参数是我对比过10+开源项目 的“普适版”,你要是团队有特殊习惯,改singleQuotesemi就行——比如你们都讨厌分号,就把semi改成false

  • .eslintrc.js:ESLint的“质检标准”和集成关键
  • 这个文件稍微复杂点,但核心是要把Prettier集成进来。新建后粘贴:

    module.exports = {
    

    env: {

    browser: true, // 支持浏览器环境的全局变量(window, document等)

    es2021: true // 支持ES2021语法

    },

    extends: [

    "eslint:recommended", // 启用ESLint自带的推荐规则

    "plugin:prettier/recommended" // 关键!集成Prettier和ESLint(必须放最后)

    ],

    parserOptions: {

    ecmaVersion: "latest", // 支持最新ECMAScript语法

    sourceType: "module" // 支持ES模块(import/export)

    },

    rules: {

    // 这里放团队自定义的规则,比如禁止console.log

    "no-console": process.env.NODE_ENV === "production" ? "error" "warn"

    }

    };

    重点看extends数组

    plugin:prettier/recommended是个“组合包”,它会同时启用eslint-config-prettiereslint-plugin-prettier,等于一步到位完成集成。这个配置必须放 否则可能被其他规则覆盖。

  • .eslintignore.prettierignore:告诉工具“别管这些文件”
  • 有些文件不需要格式化(比如node_modules里的代码、打包后的dist文件夹),新建这两个文件,内容一样:

    node_modules/
    

    dist/

    build/

    *.d.ts

    这样工具就不会浪费时间去检查这些文件了。

    第三步:VSCode设置“自动触发”,保存代码自动格式化

    配到这里,手动运行npx eslint fix src/已经能修复格式和质量问题了,但咱们要的是“写完代码,按一下Ctrl+S就自动格式化”——这才是解放双手的关键。

    首先确保VSCode装了两个插件:ESLint(作者是Microsoft)和Prettier

  • Code formatter
  • (作者是Prettier)。然后打开VSCode的设置(Ctrl+Shift+P输入Open User Settings (JSON)),在settings.json里添加这些配置:

    {
    

    // 保存时自动格式化

    "editor.formatOnSave": true,

    // 默认用Prettier格式化

    "editor.defaultFormatter": "esbenp.prettier-vscode",

    // 保存时自动运行ESLint修复

    "editor.codeActionsOnSave": {

    "source.fixAll.eslint": true

    },

    // 排除不需要格式化的文件

    "prettier.ignorePath": ".prettierignore",

    // 让ESLint识别所有文件类型

    "eslint.validate": [

    "javascript",

    "typescript",

    "react",

    "vue"

    ]

    }

    保存设置后,你可以测试一下:故意写段“丑陋”的代码,比如:

    const a = "hello" // 用了双引号,行尾没分号
    

    function foo(){} // 函数括号后没空格

    按Ctrl+S保存,如果自动变成:

    const a = 'hello'; // 单引号加分号
    

    function foo() {} // 括号后加空格

    恭喜你,自动格式化已经生效了!

    第四步:框架适配:React/TS项目这样改,避免“水土不服”

    前面讲的是基础配置,如果你用React或TypeScript,还需要稍微调整,不然可能会报错“找不到React”“TS类型错误未检测到”。我把常见框架的适配代码整理好了,直接替换.eslintrc.js就行。

    React项目(需先安装依赖):

    npm install save-dev eslint-plugin-react eslint-plugin-react-hooks

    然后更新.eslintrc.js

    module.exports = {
    

    env: { browser: true, es2021: true },

    extends: [

    "eslint:recommended",

    "plugin:react/recommended", // React推荐规则

    "plugin:react-hooks/recommended", // Hooks规则(比如禁止在条件语句里调用useState)

    "plugin:prettier/recommended"

    ],

    parserOptions: { ecmaVersion: "latest", sourceType: "module", ecmaFeatures: { jsx: true } },

    plugins: ["react", "react-hooks"],

    rules: {

    "react/prop-types": "off" // 如果用TS,不需要prop-types检查

    }

    };

    TypeScript项目(需先安装依赖):

    npm install save-dev @typescript-eslint/eslint-plugin @typescript-eslint/parser

    然后更新.eslintrc.js

    module.exports = {
    

    env: { browser: true, es2021: true },

    extends: [

    "eslint:recommended",

    "plugin:@typescript-eslint/recommended", // TS推荐规则

    "plugin:prettier/recommended"

    ],

    parser: "@typescript-eslint/parser", // 用TS解析器

    parserOptions: { ecmaVersion: "latest", sourceType: "module" },

    plugins: ["@typescript-eslint"],

    rules: {

    "@typescript-eslint/no-unused-vars": ["error", { varsIgnorePattern: "^_" }] // 允许以下划线开头的未使用变量

    }

    };

    我上个月帮一个Vue3+TS项目配置时,一开始漏了parser: "@typescript-eslint/parser",结果ESLint一直报错“Parsing error: Cannot read file ‘tsconfig.json’”,加上这句话就好了——所以用TS的同学,这个配置千万别忘。

    常见问题:3个“坑”的解决办法

    最后说几个大家常遇到的问题,你配的时候可以提前规避:

  • 保存后没反应?
  • 先检查VSCode插件是否装对(ESLint和Prettier都要装),然后看settings.jsoneditor.formatOnSave是不是true。如果还不行,试试重启VSCode。

  • ESLint和Prettier规则冲突?
  • 比如ESLint提示“Expected double quotes”但Prettier强制单引号。这时候检查.eslintrc.jsextends有没有plugin:prettier/recommended,并且放在最后。

  • TS项目提示“找不到模块”?
  • .eslintrc.jsparserOptions里添加project: "./tsconfig.json",让ESLint读取TS配置。

    按照这些步骤配完,你团队的代码风格就能实现“一人配置,全员受益”了。记得让团队成员都同步VSCode设置,这样大家写出来的代码就像一个人写的一样整齐。如果遇到其他问题,欢迎在评论区告诉我你的框架和报错信息,我来帮你看看~


    你是不是担心装了Prettier和ESLint后,写代码会变卡?其实完全不用怕。这俩工具平时“不干活”,只有你按Ctrl+S保存代码的时候才会启动——就像你收拾房间,平时东西随便放,睡前花两分钟整理一下就行,不会占用你白天的时间。我之前带的团队用这套配置时,有人专门测过:写一个200行的React组件,从输入完代码到保存完成,总共也就多花了几十毫秒,快到眼睛都看不出延迟。

    关键是要学会“给工具减负”。比如node_modules里的代码是别人写的,dist是打包好的文件,这些都不用格式化,把它们写进.eslintignore和.prettierignore里,工具就不会浪费时间去检查。我去年给一个Vue项目配置时,一开始没加ignore文件,格式化整个项目花了3秒,加上之后再跑,同样的代码量只需要0.2秒——就像清理房间时先把不需要整理的箱子搬到阳台,剩下的活儿自然快多了。

    普通前端项目(代码量10万行以内)的格式化耗时通常低于100毫秒,100毫秒是什么概念?可能比你按保存键到屏幕显示“已保存”的时间还短。我自己用的老笔记本(i5处理器,8G内存)跑起来都没问题,更别说现在主流的开发本了。而且VSCode默认会优化工具运行,比如同一个文件你连续按三次保存,它也只会执行一次格式化,不会重复干活。

    其实用久了反而会觉得开发速度变快了。之前团队里有人写代码时总纠结“这里要不要换行”“分号加不加”,现在完全不用想,写完按个保存键,格式自动就对了。算下来每天至少能省出20分钟改格式的时间,攒一周就能多写一个小功能——这哪是影响速度,简直是给开发提效啊。


    Prettier和ESLint规则冲突时怎么办?

    当两者规则冲突(如引号风格、缩进方式不一致),需确保ESLint配置中已集成eslint-config-prettier。该工具会自动关闭ESLint中所有与Prettier冲突的格式化规则。具体操作是在.eslintrc.jsextends数组中添加"plugin:prettier/recommended",并将其放在 避免被其他规则覆盖。

    保存代码时自动格式化没反应是什么原因?

    首先检查VSCode是否安装了ESLintPrettier

  • Code formatter
  • 插件;其次确认VSCode设置(settings.json)中已开启"editor.formatOnSave": true"source.fixAll.eslint": true;最后检查项目根目录是否存在.eslintignore.prettierignore排除了当前编辑的文件。若仍无效,尝试重启VSCode或重新安装依赖。

    React/TypeScript项目需要额外安装哪些依赖?

    React项目需额外安装eslint-plugin-reacteslint-plugin-react-hooks,并在.eslintrc.jsextends中添加"plugin:react/recommended";TypeScript项目需安装@typescript-eslint/eslint-plugin@typescript-eslint/parser,同时在配置文件的parser字段设置为"@typescript-eslint/parser",确保ESLint能解析TS语法。

    集成Prettier和ESLint会影响开发速度吗?

    两者集成后主要在代码保存时触发格式化和检查,对开发速度影响极小。可通过配置.eslintignore.prettierignore文件,排除node_modulesdist等无需检查的目录,进一步提升运行效率。实际测试中,普通前端项目(代码量10万行以内)的格式化耗时通常低于100毫秒,几乎无感知。

    如何让团队成员共享同一套配置?

    将项目中的.prettierrc.eslintrc.js.eslintignore.prettierignore等配置文件提交到Git仓库,确保团队成员拉取代码后依赖一致;同时同步VSCode设置(如自动保存触发格式化的配置),或通过文档说明关键配置项。若团队规模较大,可封装成ESLint共享配置包(如@your-org/eslint-config),简化成员配置步骤。

    0
    显示验证码
    没有账号?注册  忘记密码?