vue3实战 --- 实现项目代码规范自动格式化

4,212 阅读5分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

在一个大型项目中,我们往往都需要通过团队协作去达成我们的目标。由于个人风格不同,当众多开发者一起开发时,难免会遇到代码风格上的问题。代码风格的不同会导致我们Review时不能很好的捕捉具体的变动,尤其是Git提交后,格式的改动会让评审时浪费额外的精力。为了保证不同开发者的代码可读性与美观性,我们需要借助格式化工具来将每个人的代码进行格式化,且保持格式化之后的风格统一。

editorConfig

集成editorconfig配置

EditorConfig 有助于为不同 IDE 编辑器上处理同一项目的多个开发人员维护一致的编码风格。

# http://editorconfig.org

root = true

[*] # 表示所有文件适用
charset = utf-8 # 设置文件字符集为 utf-8
indent_style = space # 缩进风格(tab | space)
indent_size = 2 # 缩进大小
end_of_line = lf # 控制换行类型(lf | cr | crlf)
trim_trailing_whitespace = true # 去除行首的任意空白字符
insert_final_newline = true # 始终在文件末尾插入一个新行

[*.md] # 表示仅 md 文件适用以下规则
max_line_length = off
trim_trailing_whitespace = false

VSCode需要安装一个插件:EditorConfig for VS Code

image-20210722215138665

prettier

Prettier是一个代码格式化工具,它可以支持JS/JSX/TS/Flow/JSON/CSS/LESS等文件格式,它能够解析代码,使用你自己设定的规则来重新打印出格式规范的代码。

使用

  1. 安装
npm install prettier -D
  1. 配置

配置.prettierrc文件:

  • useTabs:使用tab缩进还是空格缩进,选择false时表示使用空格;
  • tabWidth:tab是空格的情况下,是几个空格,选择2个;
  • printWidth:当行字符的长度,推荐80;
  • singleQuote:使用单引号还是双引号,选择true,使用单引号;
  • trailingComma:在多行输入的尾逗号是否添加,设置为 none
  • semi:语句末尾是否要加分号,默认值true,选择false表示不加;
  • 更多的配置可以查看官方文档
{
  "useTabs": false,
  "tabWidth": 2,
  "printWidth": 80,
  "singleQuote": true,
  "trailingComma": "none",
  "semi": false
}
  1. 添加忽略文件
/dist/*
.local
.output.js
/node_modules/**

**/*.svg
**/*.sh

/public/*

4, 安装插件

每一次格式化样式的时候,我们都需要使用指令的话比较麻烦

所以我们在vscode上安装prettier对应的插件

image-20210722214543454

设置vscode的保存行为,让vscode在保存的时候自动使用prettier进行代码格式化

LBAmak.png

  1. 测试

在代码中进行修改后保存查看效果

我们会发现默认情况下,保存的时候,vscode只会使用prettier对当前文件进行代码格式化

并不会对整个代码中的文件进行代码格式化,如果需要对整个代码中的文件进行格式化操作

需要在package.jsonscript选项中配置如下脚本:

"prettier": "prettier --write ."

eslint

代码规范化在日益庞大的前端多人协作项目中越来越凸显它的价值,eslint是前端代码规范方案中很优秀的代表。它提供了对句法、错误、代码格式的检测能力。

  1. 生成配置文件,按提示选择对应的场景 即可自动生成对应的eslint配置文件
eslint --init

根据命令提示,完成操作:

  • How would you like to use ESLint? (你想如何使用eslint?)

    To check syntax only(只检查语法检查语法并发现问题) To check syntax and find problems(检查语法并发现问题To check syntax, find problems, and enforce code style检查语法,发现问题,并强制代码样式

  • What type of modules does your project use?(您的项目使用什么类型的模块?)

    JavaScript modules (import/export) CommonJS (require/exports) None of these

  • Which framework does your project use? (你的项目使用什么框架?)

    React Vue.js None of these(这些中没有任何一个

  • Does your project use TypeScript?(你的项目中使用Typescript吗?)

    Yes/No

  • Where does your code run?(你的代码运行在?)

    Browser(浏览器) Node(Node

  • How would you like to define a style for your project?(你想给你的项目定义什么风格?

    Use a popular style guide使用一个流行的风格指南) Answer questions about your style(回答你关于风格的问题) Inspect your JavaScript file(检查你的javascript文件

  • Which style guide do you want to follow? (你想遵循是么样的风格指南?

    Airbnb: github.com/airbnb/java… Standard: github.com/standard/st… Google: github.com/google/esli… XO: github.com/xojs/eslint…

  • What format do you want your config file to be in?(你希望配置文件的格式是什么?

    JavaScript YAML JSON

  1. 和prettier一样,为了方便vscode根据我们所配置的eslint的规则对我们的代码进行检测和修复,我们需要安装eslint在vscode中的插件

image-20210722215933360

3.配置

Eslint 默认只会对工作空间的js文件进行检查,如果想让它检查其他的文件类型需要在vscode的setting.json中配置:

"eslint.validate": [
    "javascript",
    "javascriptreact",
    "vue"
]

解决冲突问题

editorconfig,eslintprettier都可以解决代码的格式化问题

配置说明
editorconfig覆盖编辑器的选项,规范化编辑器对于代码的配置和显示
prettier在保存的时候对代码进行格式化,主要针对于代码风格问题进行修复
eslint在保存的时候对代码进行格式化,主要针对于代码质量问题进行修复

eslint虽然可以同时对代码质量问题代码风格问题进行检测和修复

但是eslint代码风格问题方面的检测没有prettier全面

如果觉的eslint代码风格问题方面的检测已经足以满足需求,可以选择不使用prettier

但如果同时使用了eslintprettier,那么它们在代码风格方面的检测可能会存在冲突

此时我们可以安装对应的插件来解决这个问题

npm i eslint-plugin-prettier eslint-config-prettier -D
module.exports = {
  env: {
    browser: true,
    es2021: true
  },
  extends: [
    'plugin:vue/essential',
    'airbnb-base',
    'plugin:prettier/recommended' // 添加 prettier 插件 以解决冲突
  ],
  parserOptions: {
    ecmaVersion: 12,
    parser: '@typescript-eslint/parser',
    sourceType: 'module'
  },
  plugins: ['vue', '@typescript-eslint'],
  rules: {
    'max-len': ['error', 120],
    'vue/no-multiple-template-root': 'off' // 关闭多根节点的校验
  }
}

stylelint

stylelinteslint一样 都是对代码进行校对的工具

stylelint的配置相对比较简单,直接参考文档即可

.stylelintrc.json

{
  "extends": [
    "stylelint-config-standard",
    "stylelint-config-prettier"
  ]
}

.stylelintignore

node_modules
dist

参考

利用EditorConfig统一项目代码风格

Prettier配置指南

Vite2.0+Vue3.0中使用eslint+prettier的正确姿势

Eslint在工程中和VScode上的使用