Config File
Config File Locations
FS Guard automatically searches for configuration in the following locations (in order of precedence):
- fs-guard.config.ts
- fs-guard.config.js
- fs-guard.config.json
- .fsguard property in package.json
TypeScript Configuration
TypeScript configuration provides full type safety and IntelliSense:
typescript
// fs-guard.config.tsimport type { FsGuardConfig } from "@promise-inc/fs-guard";
export const config: FsGuardConfig = { rules: { "src": "*", "src/components": ["Button.tsx", "Input.tsx"], "src/hooks": { required: true, pattern: "use*.ts", }, },};JavaScript Configuration
typescript
// fs-guard.config.jsmodule.exports = { rules: { "src": "*", "tests": { required: true, pattern: "*.test.ts", }, },};JSON Configuration
typescript
// fs-guard.config.json{ "rules": { "src": "*", "docs": { "required": true, "pattern": "*.md" } }}package.json Configuration
typescript
// package.json{ "name": "my-app", "fsguard": { "rules": { "src": "*", "public": "*" } }}FsGuardConfig Interface
typescript
interface FsGuardConfig { // Base directory for validation (default: current working directory) baseDir?: string;
// Structural rules rules: Record<string, RuleValue>;
// Extend a preset preset?: string;
// Ignore patterns (glob syntax) ignore?: string[];}
type RuleValue = | "*" | string[] | { required?: boolean; pattern?: string; maxDepth?: number; };Complete Example
typescript
import type { FsGuardConfig } from "@promise-inc/fs-guard";
export const config: FsGuardConfig = { baseDir: "./", preset: "react-ts", ignore: ["**/node_modules/**", "**/.git/**"], rules: { // Directory must exist "src": "*",
// Required files "src": ["index.tsx", "App.tsx"],
// Pattern matching "src/components": { required: true, pattern: "*.tsx", },
// Max depth "src/utils": { required: true, maxDepth: 2, },
// Combination "src/hooks": { required: true, pattern: "use*.ts", maxDepth: 1, }, },};