S2 EsLint implementation
All checks were successful
Build, test and publish / verify (push) Successful in 1m40s
All checks were successful
Build, test and publish / verify (push) Successful in 1m40s
This commit is contained in:
47
README.md
47
README.md
@@ -169,6 +169,53 @@ backend on port 8080. Frontend builds and tests run independently of Maven:
|
||||
`npm run build` and `npm test`. See the frontend README for browser tests and
|
||||
production hosting requirements.
|
||||
|
||||
## Frontend lint and formatting
|
||||
|
||||
Run these commands from `agiledancers-fe/`:
|
||||
|
||||
```sh
|
||||
npm run lint
|
||||
npm run lint:fix
|
||||
```
|
||||
|
||||
`lint` checks maintained application code, inline and external Angular templates,
|
||||
unit tests, Playwright tests and JavaScript/TypeScript configuration. It uses the
|
||||
recommended JavaScript, Angular and type-aware TypeScript rules. It changes no
|
||||
files; both errors and warnings cause failure. Dependencies, generated output
|
||||
and `package-lock.json` are excluded. `lint:fix` applies ESLint's available fixes;
|
||||
review the diff and resolve any remaining findings manually. Prettier retains
|
||||
responsibility for formatting with the existing configuration.
|
||||
|
||||
Every branch pipeline runs `npm run lint` immediately after frontend `npm ci`,
|
||||
before frontend tests/builds and container E2E. Failure prevents image publication;
|
||||
findings are in the job log and retained `ci/artifacts/verify.log`. CI only checks
|
||||
and never fixes or stages source files.
|
||||
|
||||
Local `npm ci` automatically installs Husky at the repository root. Its commit
|
||||
hook runs **Prettier only**, through lint-staged with backup, rollback and hiding
|
||||
of unstaged changes in partially staged files enabled. It formats applicable
|
||||
staged frontend TypeScript, JavaScript, HTML, CSS and JSON files, then stages the
|
||||
formatting. Unrelated unstaged edits and files remain outside the commit. A
|
||||
formatter error or a conflict restoring unstaged edits aborts the commit and
|
||||
restores the original staged and unstaged state. Generated files are excluded;
|
||||
commits without applicable frontend changes skip these checks.
|
||||
|
||||
The complete Prettier-plus-ESLint hook exceeds the agreed three-second budget
|
||||
when all maintained files are staged. The selected Prettier-only hook meets the
|
||||
budget for single-file, mixed and all-file commits. ESLint is therefore run
|
||||
explicitly during development and always by CI. See [S2 validation](docs/s2-validation.md)
|
||||
for the measured environment, timings and preservation checks.
|
||||
|
||||
Hook installation is skipped when `CI` is set (including Docker builds) or
|
||||
`HUSKY=0`. Use `HUSKY=0 npm ci` to skip local installation, `HUSKY=0 git commit`
|
||||
to skip one hook execution, or `git config --local core.hooksPath /dev/null` to
|
||||
disable hooks for this clone. A subsequent normal `npm ci` enables them again.
|
||||
|
||||
VS Code recommends the ESLint extension in both root and frontend workspaces.
|
||||
With it installed, findings appear in the editor and Problems panel; the root
|
||||
workspace selects `agiledancers-fe/` as ESLint's working directory. No automatic
|
||||
fixing or formatting on save is required. `npm run lint` uses the same rules as CI.
|
||||
|
||||
## Gitea CI
|
||||
|
||||
Every branch push builds and tests both applications and their Docker images.
|
||||
|
||||
Reference in New Issue
Block a user