Skip to content
← Back to rules

unicorn/filename-case 风格

它的作用

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

名为 index.jsindex.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

配置

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

case

type: "kebabCase" | "camelCase" | "snakeCase" | "pascalCase"

default: "kebabCase"

要为文件名强制执行的大小写风格。

你可以这样设置 case 选项:

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

cases

type: object

default: {"kebabCase":true, "camelCase":false, "snakeCase":false, "pascalCase":false}

允许/强制使用的文件名大小写风格。true 表示该风格被允许,false 表示被禁止。

你可以这样设置 cases 选项:

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

cases.camelCase

type: boolean

default: false

是否允许驼峰命名法,例如 someFileName.js

cases.kebabCase

type: boolean

default: true

是否允许短横线命名法,例如 some-file-name.js

cases.pascalCase

type: boolean

default: false

是否允许帕斯卡命名法,例如 SomeFileName.js

cases.snakeCase

type: boolean

default: false

是否允许蛇形命名法,例如 some_file_name.js

ignore

type: string

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

你可以这样设置 ignore 选项:

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

multipleFileExtensions

type: boolean

default: true

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

如何使用

要通过配置文件或 CLI 启用此规则,可以使用:

json
{
  "rules": {
    "unicorn/filename-case": "error"
  }
}
bash
oxlint --deny unicorn/filename-case

参考资料