kebab-case-filenames
Krev konsistente filnavnkonvensjoner på tvers av kildemapper.
Regeldetaljer
Section titled “Regeldetaljer”Inkonsistente filnavn (blanding av camelCase, PascalCase, snake_case og kebab-case) gjør filer vanskeligere å finne og forårsaker problemer med store/små bokstaver på tvers av operativsystemer. Denne regelen validerer hvert filnavn innenfor omfanget mot et regex-mønster og foreslår rettelser.
Eksempler på feil kode
Section titled “Eksempler på feil kode”src/ helpers/ pathUtils.ts ← camelCase Git_Helper.ts ← PascalCase + snake_case ADRWriter.ts ← PascalCaseEksempler på riktig kode
Section titled “Eksempler på riktig kode”src/ helpers/ path-utils.ts git-helper.ts adr-writer.tsRegelimplementasjon
Section titled “Regelimplementasjon”/// <reference path="../rules.d.ts" />import { basename } from "node:path";
const KEBAB_CASE = /^[a-z][a-z0-9]*(-[a-z0-9]+)*\.(ts|tsx|js|jsx)$/;
export default { rules: { "kebab-case-filenames": { description: "Source files must use kebab-case naming", async check(ctx) { for (const file of ctx.scopedFiles) { const name = basename(file);
// Skip test files and type declaration files if (name.endsWith(".test.ts") || name.endsWith(".d.ts")) continue;
if (!KEBAB_CASE.test(name)) { ctx.report.violation({ message: `File "${name}" does not follow kebab-case naming convention`, file, fix: `Rename to ${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`, }); } } }, }, },} satisfies RuleSet;Når bør du bruke den
Section titled “Når bør du bruke den”Når teamet ditt har standardisert en navnekonvensjon og ønsker å håndheve den automatisk. Tilpass regex for din konvensjon:
// PascalCase (React components)const PASCAL_CASE = /^[A-Z][a-zA-Z0-9]*\.(ts|tsx)$/;
// camelCaseconst CAMEL_CASE = /^[a-z][a-zA-Z0-9]*\.(ts|tsx|js|jsx)$/;
// snake_case (Python-style)const SNAKE_CASE = /^[a-z][a-z0-9]*(_[a-z0-9]+)*\.(ts|tsx|js|jsx)$/;Når bør du ikke bruke den
Section titled “Når bør du ikke bruke den”Når prosjektet ditt med vilje blander navnekonvensjoner (f.eks. PascalCase for React-komponenter og kebab-case for hjelpefunksjoner), eller når du migrerer en gammel kodebase der masseomdøping ikke er gjennomførbart.