---
title: sort-object-properties
description: オブジェクトのプロパティーを名前の長さ順、次に名前順に並べます。
---

- ルール ID: `tai-kun/sort-object-properties`
- 自動修正: あり

オブジェクトリテラルとオブジェクトパターンのプロパティーを、名前の長さが短い順、同じ長さなら名前順に並べます。

## 設定 [#configuration]

このルールを有効にするには、`vite.config.ts` の `lint.rules` に追加します。

```ts
"tai-kun/sort-object-properties": "error",
```

## 例 [#examples]

### 違反例 [#invalid]

```ts
const value = {
  zebra: 1,
  a: 2,
};
```

### 修正後 [#valid]

```ts
const value = {
  a: 2,
  zebra: 1,
};
```

### グループ見出し [#group-headers]

空行を挟んだコメントはグループ見出しとしてその場に残り、その下のグループ内だけが並べ替えられます。

```ts
// 変更前
const rules = {
  // カテゴリー 1

  zebra: 1,
  a: 2,

  // カテゴリー 2

  delta: 4,
  c: 3,
};
```

```ts
// 変更後
const rules = {
  // カテゴリー 1

  a: 2,
  zebra: 1,

  // カテゴリー 2

  c: 3,
  delta: 4,
};
```

## 注意 [#notes]

- 空行で区切られたグループ内だけで並べ替えます。
- プロパティー直上のコメントはプロパティーと一緒に移動します。
- 空行を挟んだコメントはグループ見出しとしてその場に残します。
- getter/setter を含むオブジェクトは対象外です。メソッドは対象です。
- プロパティーと同じ行の末尾コメント、`{` と同じ行のコメント、`}` 直前のコメントがある場合は、安全のためオブジェクト全体を対象外にします。
- computed key、`__proto__`、重複するキーを含むオブジェクトは対象外です。spread を含むオブジェクトリテラルも対象外です。
- オブジェクトリテラルは複数行化も行います。

## 関連ルール [#related-rules]

- [`object-properties-newline`](/vp-lint-plugins/rules/object-properties-newline)
- [`sort-type-members`](/vp-lint-plugins/rules/sort-type-members)
