Skip to content

unicorn/filename-case Style

What it does

Enforces a consistent case style for filenames to improve project organization and maintainability. By default, kebab-case is enforced, but other styles can be configured.

Why is this bad?

Inconsistent file naming conventions make it harder to locate files, navigate projects, and enforce consistency across a codebase. Standardizing naming conventions improves readability, reduces cognitive overhead, and aligns with best practices in large-scale development.

Examples

Examples of correct filenames for each case:

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

Options

case

{ type: 'kebabCase' | 'camelCase' | 'snakeCase' | 'pascalCase' }

You can set the case option like this:

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

cases

{ type: { [key in 'kebabCase' | 'camelCase' | 'snakeCase' | 'pascalCase']?: boolean } }

You can set the cases option like this:

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

ignore

{ type: string }

Specifies a regular expression pattern for filenames that should be ignored by this rule.

You can set the ignore option like this:

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

multipleFileExtensions

{ type: boolean, default: true }

Whether to treat additional, .-separated parts of a filename as parts of the extension rather than parts of the filename.

How to use

To enable this rule in the CLI or using the config file, you can use:

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

References

Released under the MIT License.