diff --git a/AGENTS.md b/AGENTS.md index 0601664979..54f8708135 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -29,36 +29,40 @@ When making changes to demo api, either start the api and verify it's running or Run the appropriate checks after every change and fix all reported errors. -### In a package (`packages/*`) or demo service (`demo/*`) +### Post-Change Workflow -Run from the package or service folder, or from the repo root using the `--filter` flag: +After making changes to any package (`packages/*`) or the demo project (`demo/*`), run `lint:fix` to auto-fix ESLint and Prettier issues: ```bash -# Auto-fix ESLint issues (also applies prettier formatting via eslint-plugin-prettier) -pnpm run lint:eslint --fix +# Fix a single package (from the package folder or repo root) +pnpm run lint:fix # or from repo root: -pnpm --filter run lint:eslint --fix +pnpm --filter run lint:fix -# Fix remaining prettier errors (if any still reported after lint:eslint --fix) -pnpm exec prettier --write . -# or from repo root: -pnpm --filter exec prettier --write . - -# Verify all checks pass: prettier, eslint, tsc -pnpm run lint -# or from repo root: -pnpm --filter run lint +# Fix all packages at once (from repo root) +pnpm run lint:fix ``` -`tsc` errors must be fixed manually. There is no standalone prettier format script — prettier formatting is applied via `lint:eslint --fix`. +`tsc` errors must be fixed manually — `lint:fix` does not cover type errors. + +### `lint:fix` scripts + +Every package and demo service exposes these scripts: + +- `lint:fix` — runs `lint:fix:eslint` and `lint:fix:prettier` in parallel (plus `lint:fix:style` in `demo/site`) +- `lint:fix:eslint` — runs ESLint with `--fix` (also applies Prettier formatting via `eslint-plugin-prettier`) +- `lint:fix:prettier` — runs Prettier with `--write` for any remaining formatting issues +- `lint:fix:style` — runs Stylelint with `--fix` (`demo/site` only) + +The root-level `lint:fix` runs all workspace `lint:fix` scripts recursively, then formats root-level config files. ### In `docs/` Run from the `docs/` folder: ```bash -# Auto-fix ESLint issues -pnpm run lint:eslint --fix +# Auto-fix ESLint + Prettier issues +pnpm run lint:fix # Verify all checks pass: prettier, eslint, cspell pnpm run lint diff --git a/demo/admin/package.json b/demo/admin/package.json index 264e37c7ad..1f2064b3c5 100644 --- a/demo/admin/package.json +++ b/demo/admin/package.json @@ -19,6 +19,9 @@ "lint": "run-s admin-generator intl:compile && run-p gql:types generate-block-types && run-p lint:prettier lint:eslint lint:tsc intl:extract", "lint:ci": "run-s admin-generator intl:compile && run-p gql:types generate-block-types && run-p lint:prettier lint:eslint lint:tsc lint:generated-files-not-modified", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:generated-files-not-modified": "git diff --exit-code HEAD -- $(find src -type f -path '*/generated/*')", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --project .", diff --git a/demo/api/package.json b/demo/api/package.json index e7908af473..a7affddbbf 100644 --- a/demo/api/package.json +++ b/demo/api/package.json @@ -24,6 +24,9 @@ "lint": "pnpm run api-generator && pnpm run intl:compile && run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run api-generator && pnpm run intl:compile && run-p lint:prettier lint:eslint lint:tsc lint:generated-files-not-modified", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:generated-files-not-modified": "git diff --exit-code HEAD -- $(find src -type f -path '*/generated/*')", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --project ./tsconfig.lint.json", diff --git a/demo/site/package.json b/demo/site/package.json index 0a006fedcf..ae8a9bcf8c 100644 --- a/demo/site/package.json +++ b/demo/site/package.json @@ -21,6 +21,10 @@ "lint": "run-s intl:compile && run-p gql:types generate-block-types css:types && run-p lint:prettier lint:eslint lint:tsc lint:style", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier lint:fix:style", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml,css,scss}'", + "lint:fix:style": "pnpm run lint:style --fix", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml,css,scss}'", "lint:style": "pnpm exec stylelint '**/*.{css,scss}'", "lint:tsc": "tsc --project .", diff --git a/docs/package.json b/docs/package.json index 4b06ae176f..2c5026e439 100644 --- a/docs/package.json +++ b/docs/package.json @@ -16,6 +16,9 @@ "lint": "run-p lint:prettier lint:eslint lint:spelling", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:spelling": "pnpm cspell docs/**", "serve": "docusaurus serve", diff --git a/package.json b/package.json index 537eef43fc..55288c889c 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,8 @@ "intl:extract": "formatjs extract './packages/admin/**/*.{ts,tsx}' --out-file 'lang/en.json' --ignore '**/*.{test,spec}.{ts,tsx}' --ignore './**.d.ts' --ignore './**.d.ts.map' --format simple --throws", "lint": "pnpm lint:root && pnpm --recursive run lint && pnpm lint:knip", "lint:ci": "pnpm lint:root && pnpm --recursive run lint:ci && pnpm lint:knip", + "lint:fix": "pnpm --recursive run lint:fix && pnpm lint:fix:root", + "lint:fix:root": "pnpm exec prettier --write './!(demo|docs|packages|storybook)/**/*.{ts,js,json,md,yml,yaml}'", "lint:root": "pnpm exec prettier --check './!(demo|docs|packages|storybook)/**/*.{ts,js,json,md,yml,yaml}' && pnpm cspell .changeset/*.md", "lint:eslint": "pnpm --recursive run lint:eslint", "lint:tsc": "pnpm --recursive run lint:tsc", diff --git a/packages/admin/admin-color-picker/package.json b/packages/admin/admin-color-picker/package.json index e202b57dc8..8c2c27c1fd 100644 --- a/packages/admin/admin-color-picker/package.json +++ b/packages/admin/admin-color-picker/package.json @@ -22,6 +22,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "start": "run-p start:babel start:types", diff --git a/packages/admin/admin-date-time/package.json b/packages/admin/admin-date-time/package.json index a93af53850..b79ea6e470 100644 --- a/packages/admin/admin-date-time/package.json +++ b/packages/admin/admin-date-time/package.json @@ -22,6 +22,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "start": "run-p start:babel start:types", diff --git a/packages/admin/admin-generator/package.json b/packages/admin/admin-generator/package.json index 9fcb2b1c27..35011331ee 100644 --- a/packages/admin/admin-generator/package.json +++ b/packages/admin/admin-generator/package.json @@ -25,6 +25,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc", "test": "vitest --run", diff --git a/packages/admin/admin-icons/package.json b/packages/admin/admin-icons/package.json index 457ba6bd1d..1164a38ed4 100644 --- a/packages/admin/admin-icons/package.json +++ b/packages/admin/admin-icons/package.json @@ -20,6 +20,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "start": "pnpm run generate-icons && run-p start:babel start:types", diff --git a/packages/admin/admin-rte/package.json b/packages/admin/admin-rte/package.json index 3474c55478..b9d2b3ace0 100644 --- a/packages/admin/admin-rte/package.json +++ b/packages/admin/admin-rte/package.json @@ -22,6 +22,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "start": "run-p start:babel start:types", diff --git a/packages/admin/admin/package.json b/packages/admin/admin/package.json index bba76adf60..6bdeac718e 100644 --- a/packages/admin/admin/package.json +++ b/packages/admin/admin/package.json @@ -23,6 +23,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "start": "run-p start:babel start:types", diff --git a/packages/admin/brevo-admin/package.json b/packages/admin/brevo-admin/package.json index c0a60ff2eb..cbfdf36c4c 100644 --- a/packages/admin/brevo-admin/package.json +++ b/packages/admin/brevo-admin/package.json @@ -24,6 +24,9 @@ "lint": "run-p gql:types generate-block-types && run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write './**/*.{js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check './**/*.{js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "start": "run-p gql:types generate-block-types && run-p start:babel start:types", diff --git a/packages/admin/cms-admin/package.json b/packages/admin/cms-admin/package.json index 036c48d905..47aec4f999 100644 --- a/packages/admin/cms-admin/package.json +++ b/packages/admin/cms-admin/package.json @@ -26,6 +26,9 @@ "lint": "run-p gql:types generate-block-types && run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "start": "run-p gql:types generate-block-types && run-p start:babel start:types", diff --git a/packages/api/api-generator/package.json b/packages/api/api-generator/package.json index 363ea0f065..dc52fa0945 100644 --- a/packages/api/api-generator/package.json +++ b/packages/api/api-generator/package.json @@ -25,6 +25,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "test": "NODE_OPTIONS=--experimental-vm-modules pnpm exec jest", diff --git a/packages/api/brevo-api/package.json b/packages/api/brevo-api/package.json index eed6897b6b..b727e383c2 100644 --- a/packages/api/brevo-api/package.json +++ b/packages/api/brevo-api/package.json @@ -22,6 +22,9 @@ "generate-schema:watch": "chokidar \"src/\" -c \"$npm_execpath generate-schema\"", "lint": "run-p lint:eslint lint:tsc", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write './**/*.{js,json,md,yml,yaml}'", "lint:prettier": "npx prettier --check './**/*.{js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "mikro-orm": "dotenv -e .env.secrets -e .env.local -e .env -e .env.site-configs -- mikro-orm", diff --git a/packages/api/cms-api/package.json b/packages/api/cms-api/package.json index 03b786f5d4..c7a601ad40 100644 --- a/packages/api/cms-api/package.json +++ b/packages/api/cms-api/package.json @@ -26,6 +26,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "test": "jest", diff --git a/packages/cli/package.json b/packages/cli/package.json index 7aa19b4d1b..a0a9fa0082 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -25,6 +25,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc", "test": "vitest --run", diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index e1496cef5b..d2b2de8093 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -36,6 +36,9 @@ "lint": "run-p lint:prettier lint:eslint", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'" }, "dependencies": { diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 57e82f1b13..db14ab0a2d 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -12,6 +12,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc", "test": "jest", diff --git a/packages/mail-react/package.json b/packages/mail-react/package.json index 9038eb600b..74fc72ce90 100644 --- a/packages/mail-react/package.json +++ b/packages/mail-react/package.json @@ -22,6 +22,9 @@ "lint": "pnpm generate-block-types && run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc" }, diff --git a/packages/site/site-nextjs/package.json b/packages/site/site-nextjs/package.json index f03e4b82ea..835a04a7d9 100644 --- a/packages/site/site-nextjs/package.json +++ b/packages/site/site-nextjs/package.json @@ -34,6 +34,9 @@ "lint": "pnpm run generate-block-types && run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml,css,scss}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml,css,scss}'", "lint:tsc": "tsc --noEmit", "test": "vitest --run", diff --git a/packages/site/site-react/package.json b/packages/site/site-react/package.json index a540785260..ba5d3de6d2 100644 --- a/packages/site/site-react/package.json +++ b/packages/site/site-react/package.json @@ -34,6 +34,9 @@ "lint": "pnpm generate-block-types && run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml,css,scss}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml,css,scss}'", "lint:tsc": "tsc --noEmit", "test": "vitest --run", diff --git a/storybook/package.json b/storybook/package.json index 6dad9cdb91..baaa6d6902 100644 --- a/storybook/package.json +++ b/storybook/package.json @@ -12,6 +12,9 @@ "lint": "run-p lint:prettier lint:eslint lint:tsc", "lint:ci": "pnpm run lint", "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' .storybook/ --no-warn-ignored", + "lint:fix": "run-p lint:fix:eslint lint:fix:prettier", + "lint:fix:eslint": "pnpm run lint:eslint --fix", + "lint:fix:prettier": "pnpm exec prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --noEmit", "storybook": "storybook dev -p 26638 --no-version-updates"