【前端工程化】Eslint+Prettier vue项目实现文件保存时自动代码格式化

【前端工程化】Eslint+Prettier vue项目实现文件保存时自动代码格式化

工作流程:

  1. 当保存文件时,VS Code 触发格式化
  2. ESLint 首先运行代码质量检查
  3. eslint-plugin-prettier 调用 Prettier 进行格式化
  4. eslint-config-prettier 确保 ESLint 不干涉格式化规则
  5. @vue/eslint-config-prettier 确保 Vue 单文件组件正确格式化
  6. 格式化结果自动应用到文件

实现步骤

1. 安装ESLint

  • 检查Eslint的版本,配合Prettier一起使用,需要版本大于8
package.js 复制代码
"devDependencies": {
    "eslint": "^8.0.0",
}

2. 安装在 Vue 项目中集成 ESLint 和 Prettier 所需的开发依赖包

bash 复制代码
npm install -D prettier eslint-plugin-prettier eslint-config-prettier @vue/eslint-config-prettier
  • 作用
  1. prettier

    • 代码格式化工具核心包
    • 负责实际的代码格式化工作
    • 支持 JavaScript, TypeScript, CSS, SCSS, Less, HTML, Vue 等多种语言
  2. eslint-plugin-prettier

    • 将 Prettier 作为 ESLint 插件运行
    • 允许通过 ESLint 规则运行 Prettier
    • 在 ESLint 错误中显示 Prettier 的格式化问题
    • 启用规则:"prettier/prettier": "error"
  3. eslint-config-prettier

    • 禁用所有与 Prettier 冲突的 ESLint 规则
    • 确保 ESLint 不会报告 Prettier 已处理的格式问题
    • 防止两个工具在相同问题上产生冲突报告
  4. @vue/eslint-config-prettier

    • Vue 官方提供的 Prettier 集成配置

    • 专门针对 Vue 项目优化

    • 包含:

      • eslint-config-prettier 的基础功能
      • Vue 特定规则与 Prettier 的兼容配置
      • 针对 .vue 文件的优化设置

3. 典型配置

  • .eslintrc.jspackage.json 的 eslintConfig 中,这里使用的新建配置文件.eslintrc.js.eslintignore文件和.prettierrc.prettierignore文件
.eslintrc.js 复制代码
module.exports = {

  root: true,

  env: {

    node: true,

    browser: true,

    es2021: true,

  },

  extends: [

    'plugin:vue/vue3-essential',

    'eslint:recommended',

    'prettier', // 直接使用 prettier 而不是 @vue/prettier

  ],

  plugins: ['prettier'],

  parserOptions: {

    parser: '@babel/eslint-parser',

    ecmaVersion: 2021,

    sourceType: 'module',

    requireConfigFile: false,

  },

  rules: {

    'prettier/prettier': 'warn',

    'vue/multi-word-component-names': 'off',

    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',

    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',

    'vue/html-self-closing': [

      'warn',

      {

        html: {

          void: 'always',

          normal: 'always',

          component: 'always',

        },

        svg: 'always',

        math: 'always',

      },

    ],

    'vue/attribute-hyphenation': ['warn', 'always'],

    'vue/v-bind-style': ['warn', 'shorthand'],

  },

};
.eslintignore 复制代码
/public

/dist

/node_modules

src/assets/fonts/**/*.js

*.log
.prettierrc 复制代码
{

    "semi": true,

    "singleQuote": true,

    "tabWidth": 2,

    "trailingComma": "all",

    "printWidth": 100,

    "bracketSpacing": true,

    "arrowParens": "always",

    "endOfLine": "auto"

}
.prettierignore 复制代码
/dist

/node_modules

/public

src/assets/fonts/**/*.js

*.html

4. 配置 VS Code

  1. 安装 VS Code 扩展:

    • ESLint (dbaeumer.vscode-eslint)
    • Prettier - Code formatter (esbenp.prettier-vscode)
    • Volar (Vue 官方推荐扩展)
  2. 在项目根目录创建 .vscode/settings.json 文件:

settings.json 复制代码
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "vue"
  ],
  "files.associations": {
    "*.vue": "vue"
  },
  "prettier.enable": true,
  "[vue]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

5. 应用更改

  1. 安装所有依赖:
bash 复制代码
npm install
  1. 测试配置是否生效:
bash 复制代码
npm run lint

6. 验证自动格式化

  1. 在 VS Code 中打开一个 Vue 文件
  2. 添加一些格式混乱的代码
  3. 保存文件(Ctrl+S)
  4. 应该会自动格式化代码

总结

  1. ESLint:作为代码质量检查的核心工具(版本≥8.0)
  2. Prettier:负责代码风格的统一格式化
  3. 集成插件
    • eslint-plugin-prettier:将 Prettier 作为 ESLint 规则运行
    • eslint-config-prettier:解决规则冲突
    • @vue/eslint-config-prettier:优化 Vue 单文件组件支持

这种配置实现了高效的自动化工作流:当开发者保存文件时,VS Code 会触发 ESLint 进行代码质量检查,然后通过 Prettier 自动应用统一的代码风格,整个过程无需人工干预。

统一代码风格是现代前端工程化的基石。通过本文介绍的 ESLint + Prettier 自动化工作流,您的 Vue 项目将获得以下关键优势:

  1. 效率提升:消除手动格式化时间,让开发者专注于核心逻辑
  2. 质量保证:实时错误检测防止低级错误进入生产环境
  3. 团队协作:统一的代码风格消除个人偏好带来的差异
  4. 专业规范:符合 Vue 官方推荐的最佳实践

"好的代码不需要解释,它自己会说话。" - Robert C. Martin

下一步建议

  1. 根据团队规范调整 .prettierrc 中的风格设置
  2. 集成 Git Hooks(如 husky + lint-staged)确保提交代码的质量
  3. 定期更新依赖版本以获取最新特性和安全修复

实践出真知:立即在您的 Vue 项目中实施这套工作流,体验自动化代码格式化带来的开发愉悦感。当每次保存文件时看到代码自动变得整洁规范,您会感谢今天的决定。

扩展阅读

让工程化工具成为您高质量代码生产的流水线,而非约束创造力的枷锁。Happy coding! 💻✨

相关推荐
24kHT几秒前
2.3 前端-ts的接口以及自定义类型
java·开发语言·前端
追光的栗子几秒前
vue3+vite 项目中怎么引入 elementplus 组件库
前端·vue.js·element
我命由我123457 分钟前
VSCode - VSCode 快速跳转标签页
开发语言·前端·ide·vscode·编辑器·html·js
爱学习的茄子34 分钟前
告别 useState 噩梦:useReducer 如何终结 React 状态管理混乱?
前端·深度学习·react.js
油丶酸萝卜别吃1 小时前
怎么判断一个对象是不是vue的实例
前端·javascript·vue.js
科技D人生1 小时前
Vue.js 学习总结(18)—— Vue 3.6.0-alpha1:性能“核弹“来袭,你的应用准备好“起飞“了吗?!
前端·vue.js·vue3·vue 3.6·vue3.6
鬼鬼_静若为竹1 小时前
我终于也是会写3d小游戏的人了,发个掘金显摆显摆
前端
Mintopia2 小时前
Three.js 滚动条 3D 视差动画原理解析
前端·javascript·three.js
啃火龙果的兔子2 小时前
在 React 中根据数值动态设置 SVG 线条粗细
前端·react.js·前端框架
蓝乐2 小时前
Angular项目IOS16.1.1设备页面空白问题
前端·javascript·angular.js