自用Prettier规则分享

207 阅读3分钟

前言

在前端开发领域,代码规范是非常重要的一环。它可以优化代码质量,提高协作效率,降低维护成本。而 Prettier 是一个非常流行的代码格式化工具,能够自动格式化代码,让代码风格更加统一且易于阅读。以下是 Prettier 的几个好处:

  1. 统一代码风格

在团队合作中,不同的开发人员可能有不同的代码风格和习惯。这会导致代码的可读性、可维护性和可扩展性降低,并且增加阅读他人代码的难度。而 Prettier 可以通过强制执行代码规则和格式,使代码风格更加统一,从而减少因为代码格式差异引起的冲突和问题。

  1. 简化代码 Review 过程

代码 Review 是团队中非常重要的一项工作,需要花费大量的时间和精力。而 Prettier 可以帮助开发者自动进行代码格式化,减少因为格式不一致引起的 Review 时间,让更多精力放在代码逻辑和架构上。

  1. 提高代码质量

代码的可读性对于一个项目的成功至关重要。Prettier 可以使代码格式更加整洁,让代码易于阅读。这不仅可以提高代码的可读性,还可以降低因为代码可读性差导致的 Bug,从而提高代码质量。

  1. 提升开发效率

Prettier 可以自动化执行代码格式化工作,提高代码编写的效率。开发者可以专注于编写代码,而无需花费大量时间去手动调整代码格式,让开发者更快地完成工作,并提高开发效率,能够帮助开发者实现代码规范化、节省时间,提升代码质量和可读性等方面的优化。

规则

.prettierrc.js

module.exports = {
  // 控制着是否在函数名和括号之间加上空格
  'spaceBeforeFunctionParen': false,
  // 是否关闭三元表达式的校验
  'noConditionalOperator': true,
  // 当箭头函数的参数只有一个时,参数使用小括号包裹
  'arrowParens': 'always',
  // 打印对象字面量中括号之间的空格。
  'bracketSpacing': false,
  // 是否将具有多行元素的>放在最后一行的末尾,还是单独放在下一行
  'bracketSameLine': false,
  // 是否将JSX中具有多行元素的>放在最后一行的末尾,还是是单独放在下一行
  'jsxBracketSameLine': false,
  // 行结束符
  'endOfLine': 'auto',
  // 是否打印分号
  'semi': false,
  // html中对于空格的处理方式
  'htmlWhitespaceSensitivity': 'strict',
  // 是否在文件顶部插入@format标记
  'insertPragma': false,
  // 指定超过该最大长度时,prettier换行。
  //  'printWidth': 90,
  // 属性换行方式
  'proseWrap': 'always',
  // 对象中的属性名如何添加引号
  'quoteProps': 'preserve',
  // 是否在文件开头有@prettier或者@format才格式化该文件
  'requirePragma': false,
  // 是否使用单引号替代双引号
  'singleQuote': true,
  // jsx中是否使用单引号替代双引号
  'jsxSingleQuote': false,
  // 指定Tab的空格数
  'tabWidth': 2,
  // 多属性换行
  'singleAttributePerLine': true,
  // 是否使用tab进行缩进,而不是使用空格
  // 'useTabs': false,
  // 打印结尾分号
  'trailingComma': 'all',
  // import 导入顺序
  'importOrder': [
    '^(^react$|^@react|^react|^recoil|redux|vite)',
    '^(^antd|^rsuite|^@emotion|^emotion|theme-ui|^semantic-ui|^@rebass|^@chakra-ui|bootstrap|tailwind|bulma|mui|^@blueprintjs|reactstrap|^@mantine)',
    '<THIRD_PARTY_MODULES>',
    '^@(.*)$',
    '^~(.*)$',
    '^[./]',
  ],
  // 是否将命名空间导入说明符放到导入分组的最前面
  'importOrderGroupNamespaceSpecifiers': true,
  // 对导入的包不同分类中间是否添加空格
  'importOrderSeparation': true,
  // 对导入的同一个包中的说明符是否排序
  'importOrderSortSpecifiers': true,
}