required-export-pattern
Verifiser at filer i en spesifikk mappe eksporterer en påkrevd funksjonssignatur.
Regeldetaljer
Section titled “Regeldetaljer”Konvensjonsbaserte arkitekturer (CLI-kommandofiler, rutebehandlere, pluginmoduler) krever ofte at hver fil eksporterer en funksjon med et spesifikt navnemønster. Denne regelen skanner omfangsfiler etter en påkrevd eksport og rapporterer enhver fil som ikke samsvarer. Den bruker Promise.all() for å sjekke filer parallelt for ytelse.
Eksempler på feil kode
Section titled “Eksempler på feil kode”// Missing the required register*Command exportexport function deploy() { // ...}Eksempler på riktig kode
Section titled “Eksempler på riktig kode”import type { Command } from "commander";
export function registerDeployCommand(program: Command) { program .command("deploy") .description("Deploy the application") .action(() => { // ... });}Regelimplementasjon
Section titled “Regelimplementasjon”/// <reference path="../rules.d.ts" />
export default { rules: { "register-function-export": { description: "Command files must export a register*Command function", async check(ctx) { const files = ctx.scopedFiles.filter((f) => !f.endsWith("index.ts")); const checks = files.map(async (file) => { const content = await ctx.readFile(file); if (!/export\s+function\s+register\w+Command/.test(content)) { ctx.report.violation({ message: "Command file must export a register*Command function", file, }); } }); await Promise.all(checks); }, }, },} satisfies RuleSet;Tilpass mønsteret for andre konvensjoner:
// Express/Hono route handlers/export\s+default\s+.*Router/
// React page components/export\s+default\s+function\s+\w+Page/
// Plugin modules/export\s+const\s+plugin\s*[:=]/Når du bør bruke den
Section titled “Når du bør bruke den”Når arkitekturen din krever et spesifikt eksportmønster fra filer i en mappe. Kombiner denne med ADR-ens files-frontmatter-felt for å avgrense den til riktig mappe.
Når du ikke bør bruke den
Section titled “Når du ikke bør bruke den”Når mappen inneholder blandede filtyper som ikke alle trenger å følge det samme eksportmønsteret.