diff --git a/AGENTS.md b/AGENTS.md index b15386282..a26c5330d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -50,6 +50,17 @@ npm --prefix admin run lint # Lint Admin npm --prefix site run lint # Lint Site (includes stylelint) ``` +### Linting and Formatting (Auto-fix) + +```bash +npm run lint:fix # Auto-fix all packages +npm --prefix api run lint:fix # Auto-fix API +npm --prefix admin run lint:fix # Auto-fix Admin +npm --prefix site run lint:fix # Auto-fix Site (includes stylelint) +``` + +These commands auto-fix import sorting, remove unused imports, and apply Prettier formatting. The root `lint:fix` also formats config files outside the packages. + ### Testing (API only currently) ```bash @@ -141,6 +152,10 @@ The `site-configs/` directory manages site configurations, compiled into environ ## Key Patterns +### Post-Change Workflow + +After making code changes, always run `npm --prefix run lint:fix` for each affected package. This auto-fixes import ordering, removes unused imports, and applies Prettier formatting. Run this before committing or presenting changes as complete. + ### API Module Structure Feature-based organization: `auth/`, `documents/`, `dam/`, `menus/`, `footers/`, `redirects/`, `status/` diff --git a/admin/package.json b/admin/package.json index dd40bb332..e1690762f 100644 --- a/admin/package.json +++ b/admin/package.json @@ -19,6 +19,9 @@ "lint": "npm run admin-generator && run-p -l lint:{eslint,knip,prettier,tsc} intl:extract", "lint:ci": "npm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:{eslint,prettier}", + "lint:fix:eslint": "npm run lint:eslint -- --fix", + "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --project .", diff --git a/api/package.json b/api/package.json index bdb8878d4..4f24a9cd0 100644 --- a/api/package.json +++ b/api/package.json @@ -17,6 +17,9 @@ "lint": "npm run api-generator && run-p -l lint:{eslint,knip,prettier,tsc}", "lint:ci": "npm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:{eslint,prettier}", + "lint:fix:eslint": "npm run lint:eslint -- --fix", + "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --project ./tsconfig.lint.json", diff --git a/package.json b/package.json index 1a738ff97..9dc01a979 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,11 @@ "lint:api": "npm --prefix api run lint", "lint:ci": "npm run lint:root", "lint:create-app": "npm --prefix api run lint", + "lint:fix": "run-p -l lint:fix:{admin,api,root,site}", + "lint:fix:admin": "npm --prefix admin run lint:fix", + "lint:fix:api": "npm --prefix api run lint:fix", + "lint:fix:root": "npx prettier --write './!(admin|api|site|create-app)/**/*.{js,json,md,yml,yaml}'", + "lint:fix:site": "npm --prefix site run lint:fix", "lint:root": "npx prettier --check './!(admin|api|site|create-app)/**/*.{js,json,md,yml,yaml}' && npx cspell '**'", "lint:site": "npm --prefix site run lint", "test:ci": "run-p test:ci:*", diff --git a/site/package.json b/site/package.json index ede6ae7fa..d3883b3d5 100644 --- a/site/package.json +++ b/site/package.json @@ -17,6 +17,10 @@ "lint": "run-p -l lint:{eslint,knip,prettier,style,tsc} intl:extract", "lint:ci": "npm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:{eslint,prettier,style}", + "lint:fix:eslint": "npm run lint:eslint -- --fix", + "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml,css,scss}'", + "lint:fix:style": "npm run lint:style -- --fix", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml,css,scss}'", "lint:style": "npx stylelint '**/*.{css,scss}'",