---
url: /docs/guide/usage/linter/rules/unicorn/filename-case.md
---

### 作用

强制文件名使用一致的大小写风格，以改善项目组织和可维护性。
默认情况下会强制使用 `kebab-case`，但也可以配置其他风格。

名为 `index.js`、`index.ts` 等文件不受此规则约束，因为它们无法可靠地
重命名为其他大小写形式（主要是 PascalCase 的问题）。

### 为什么这不好？

不一致的文件命名约定会让查找文件、浏览项目以及在代码库中强制
一致性变得更困难。标准化命名约定可以提高可读性、减少认知负担，
并与大规模开发中的最佳实践保持一致。

### 示例

以下是每种大小写风格下**正确**的文件名示例：

#### `kebabCase`

* `some-file-name.js`
* `some-file-name.test.js`
* `some-file-name.test-utils.js`

#### `camelCase`

* `someFileName.js`
* `someFileName.test.js`
* `someFileName.testUtils.js`

#### `snakeCase`

* `some_file_name.js`
* `some_file_name.test.js`
* `some_file_name.test_utils.js`

#### `pascalCase`

* `SomeFileName.js`
* `SomeFileName.Test.js`
* `SomeFileName.TestUtils.js`

#### `lowercase`

仅拒绝包含大写字母的文件名；分隔符可以使用。

* `somefilename.js`
* `some-file-name.js`
* `some_file_name.js`

#### `screamingSnakeCase`

* `SOME_FILE_NAME.js`
* `SOME_FILE_NAME.TEST.js`
* `SOME_FILE_NAME.TEST_UTILS.js`

## 配置

此规则接受一个包含以下属性的配置对象：

### case

type: `"kebabCase" | "camelCase" | "snakeCase" | "pascalCase" | "lowercase" | "screamingSnakeCase"`

default: `null`

要强制用于文件名的大小写风格。

你可以像这样设置 `case` 选项：

```json
{
  "unicorn/filename-case": [
    "error",
    {
      "case": "kebabCase"
    }
  ]
}
```

### cases

type: `object`

default: `null`

要允许/强制用于文件名的大小写风格。`true` 表示允许该大小写风格，`false` 表示禁止。

你可以像这样设置 `cases` 选项：

```json
{
  "unicorn/filename-case": [
    "error",
    {
      "cases": {
        "camelCase": true,
        "pascalCase": true
      }
    }
  ]
}
```

#### cases.camelCase

type: `boolean`

default: `false`

是否允许 camel case，例如 `someFileName.js`。

#### cases.kebabCase

type: `boolean`

default: `false`

是否允许 kebab case，例如 `some-file-name.js`。

#### cases.lowercase

type: `boolean`

default: `false`

是否允许小写，例如 `somefilename.js`。

#### cases.pascalCase

type: `boolean`

default: `false`

是否允许 pascal case，例如 `SomeFileName.js`。

#### cases.screamingSnakeCase

type: `boolean`

default: `false`

是否允许 screaming snake case，例如 `SOME_FILE_NAME.js`。

#### cases.snakeCase

type: `boolean`

default: `false`

是否允许 snake case，例如 `some_file_name.js`。

### ignore

type: `string[]`

用于忽略文件名的正则表达式模式数组。

你可以像这样设置 `ignore` 选项：

```json
{
  "unicorn/filename-case": [
    "error",
    {
      "ignore": ["^foo.*$"]
    }
  ]
}
```

### multipleFileExtensions

type: `boolean`

default: `true`

是否将文件名中额外的、由 `.` 分隔的部分视为扩展名的一部分，而不是文件名的一部分。

## 使用方法

## 版本

此规则是在 v0.0.14 中添加的。

## 参考
