This project uses a unified, modern ESLint flat config approach to enforce consistent coding styles, accessibility standards, and TypeScript best practices. Linting runs on:
- TypeScript (
*.ts) - HTML templates (
*.html) - Specs (
*.spec.ts)
It also integrates into the Git workflow via pre-commit hooks to ensure clean, compliant code before every commit.
IMPORTANT The OSF application must meet full accessibility (a11y) compliance to ensure equitable access for users of all abilities, in alignment with our commitment to inclusivity and funding obligations.
# Run full project lint
npm run lintExtends:
@eslint/js→ base ESLint configtypescript-eslintrecommended & stylistic configsangular-eslintTypeScript ruleseslint-plugin-prettier/recommended
Plugins:
eslint-plugin-importeslint-plugin-simple-import-sorteslint-plugin-unused-imports
Key Rules:
- Enforces Angular selector styles:
- Directives →
osfFoo(camelCase) - Components →
<osf-bar>(kebab-case)
- Directives →
- Enforces import sorting and duplicate prevention
- Removes unused imports automatically
- Allows unused variables named
_to support convention (e.g., destructuring)
Extends:
angular-eslint/templateRecommendedangular-eslint/templateAccessibility
Parser:
@angular-eslint/template-parser
Key A11y Rules (All Set to "error"):
alt-textvalid-ariaclick-events-have-key-eventsrole-has-required-ariainteractive-supports-focusno-distracting-elementsno-autofocuslabel-has-associated-control
This enforces WCAG accessibility compliance directly in Angular templates.
Loosened restrictions for developer convenience:
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-empty-function': 'off',The pre-commit file includes:
npx lint-staged→ Lint only staged files before every commit- Ensures TypeScript and template linting run automatically
| File Type | Purpose | Key Rules |
|---|---|---|
*.ts |
Lint Angular + TS logic | Unused imports, selector rules, sorting |
*.html |
Enforce a11y & Angular best practices | All template a11y rules enforced |
*.spec.ts |
Relaxed for test convenience | Some TS rules turned off |
pre-commit |
Git hook to lint before committing | Ensures consistent PR quality |