@ministryofjustice/eslint-config-hmpps v0.0.1-beta.2
@ministryofjustice/eslint-config-hmpps
This package aims so simplify code style enforcement in HMPPS typescript projects using eslint.
It should include all:
- the necessary npm packages to simplify dependency management within repositories
- rules as defined by classic Airbnb best-practice with HMPPS overrides and typescript parsing
Status
This library is now in beta. Teams are free to use this library, but further breaking changes may occur.
Usage
Usage is best demonstrated by the HMPPS typescript template as it already includes npm scripts and continuous integration tooling. New projects based on this template will automatically adopt this package.
Migrating existing projects
Automatically installing the library
The package will self install by running via npx:
npx @ministryofjustice/eslint-config-hmpps
The final step of the installation script is to run the linting tool, with --fix.
This may expose some issues that need to manually fixed and some minor config overrides may need to be applied.
Manually installing the library
The template project was migrated as part of pull request 470, so you can either manually adopt changes from it or cherry-pick the squashed commit.
Essentially, the move from eslint v8 to v9 requires changes to eslint configuration:
npm uninstall @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-airbnb-base eslint-config-prettier eslint-import-resolver-typescript eslint-plugin-cypress eslint-plugin-import eslint-plugin-no-only-tests eslint-plugin-prettiernpm install --save-dev @ministryofjustice/eslint-config-hmpps.eslintignoreand.eslintrc.jsonare not supported so can be deleted- add
eslint.config.mjs- import the default shared HMPPS rules from
@ministryofjustice/eslint-config-hmpps - add a default export with these rules
- if you had custom overrides in
.eslintrc.jsoncompared with the template project, include them after the shared defaults
- import the default shared HMPPS rules from
- run
npm run lintand address changes as necessary- adjust rules in
eslint.config.mjsto suit your project’s needs
- adjust rules in
Customising config
The point of having shared styling rules is that it reduces bike-shedding and adds some consistency across projects.
If some overriding is required to make your project successfully build configuration can be overriden via eslint.config.mjs,
e.g: here
and here.
Developing this package
It is deliberately not using typescript or rollup so that building is not required. CommonJS enables the parent and sibling packages to use the rules directly for lint checks.
Testing changes to this library
cd to this directory and then pack this library to home directory: npm pack --pack-destination ~
Inside the project of choice then:
- uninstall the existing library:
npm uninstall @ministryofjustice/eslint-config-hmpps - install from the packed file:
npm install -D ~/ministryofjustice-eslint-config-hmpps-<some-version>.tgz
TODO
- use modern eslint typescript plugins desgined for eslint v9
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
10 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago