Prettier 配置项说明（团队约定与示例）

1) semi: 是否在语句末尾添加分号
   - 取值: true | false
   - 推荐: true（更稳妥，避免 ASI 歧义）
   - 示例:
     true:  const a = 1;
     false: const a = 1

2) singleQuote: 是否使用单引号
   - 取值: true | false
   - 推荐: false（使用双引号，和 HTML/Vue 属性更统一）

3) tabWidth: 缩进宽度（空格数）
   - 取值: 正整数（常用 2 / 4）
   - 推荐: 2（前端主流）

4) useTabs: 是否使用制表符缩进
   - 取值: true | false
   - 推荐: false（统一使用空格）

5) printWidth: 每行最大字符数
   - 取值: 正整数（如 80 / 100 / 120）
   - 推荐: 100（可读性与换行平衡）

6) trailingComma: 尾随逗号策略（多行结构最后一项后面是否保留逗号）
   - 取值: "none" | "es5" | "all"
   - 推荐: "es5"（对象/数组/参数列表等保留，便于更干净的 diff）
   - 示例（es5/all）:
     const arr = [
       1,
       2,
     ];

7) arrowParens: 箭头函数参数是否总带括号
   - 取值: "always" | "avoid"
   - 推荐: "always"（更一致，便于添加/修改参数）
   - 示例:
     always: (x) => x
     avoid:  x => x

8) endOfLine: 换行符
   - 取值: "lf" | "crlf" | "cr" | "auto"
   - 推荐: "lf"（跨平台统一）

9) bracketSpacing: 对象字面量大括号内侧是否加空格
   - 取值: true | false
   - 推荐: true
   - 示例:
     true:  { a: 1 }
     false: {a:1}

10) bracketSameLine: 多行 HTML/JSX/Vue 标签的闭合尖括号是否跟最后一行同一行
    - 取值: true | false
    - 推荐: false（更符合主流 UI 组件示例的风格）
    - 示例:
      false:
        <Dialog
          title="标题"
          open
        >
          内容
        </Dialog>
      true:
        <Dialog
          title="标题"
          open>
          内容
        </Dialog>

11) singleAttributePerLine: 单行是否只放一个属性（HTML/JSX/Vue）
    - 取值: true | false
    - 推荐: false（属性很多时可考虑 true 提升对齐可读性）

12) htmlWhitespaceSensitivity: HTML 空白敏感度（影响模板合并/换行）
    - 取值: "css" | "strict" | "ignore"
    - 推荐: "css"（默认，符合浏览器渲染直觉）
    - 说明:
      css: 按 CSS 规则处理空白；
      strict: 更保守，尽量保留你的换行/空格；
      ignore: 更激进地合并到一行（除非必须换行）。

13) quoteProps: 对象属性是否加引号
    - 取值: "as-needed" | "consistent" | "preserve"
    - 推荐: "as-needed"（仅必要时加，如含连字符/空格）
    - 示例:
      as-needed: { foo: 1, "bar-baz": 2 }
      consistent: { "foo": 1, "bar-baz": 2 }

14) jsxSingleQuote: JSX/TSX 中是否使用单引号
    - 取值: true | false
    - 推荐: false（与 HTML 属性统一为双引号）

15) vueIndentScriptAndStyle: Vue 的 <script>/<style> 是否缩进
    - 取值: true | false
    - 推荐: false（避免整体多缩进一层）

16) embeddedLanguageFormatting: 模板字符串、内嵌代码是否自动格式化
    - 取值: "auto" | "off"
    - 推荐: "auto"

17) proseWrap: Markdown 文本换行
    - 取值: "preserve" | "always" | "never"
    - 推荐: "preserve"（按原文保留）

【团队推荐组合】
{
  "semi": true,
  "singleQuote": false,
  "tabWidth": 2,
  "useTabs": false,
  "printWidth": 100,
  "trailingComma": "es5",
  "arrowParens": "always",
  "endOfLine": "lf",
  "bracketSpacing": true,
  "bracketSameLine": false,
  "singleAttributePerLine": false,
  "htmlWhitespaceSensitivity": "css",
  "quoteProps": "as-needed",
  "jsxSingleQuote": false,
  "vueIndentScriptAndStyle": false,
  "embeddedLanguageFormatting": "auto",
  "proseWrap": "preserve"
}

备注：
- Prettier 专注“格式”，代码质量由 ESLint 负责；
- 若与 ESLint 规则冲突，请使用 eslint-config-prettier 关闭冲突项；
- Windows 团队注意将 endOfLine 固定为 lf，避免跨平台差异。
