Official Plugins (Kuzzle v2.x)
ESLint Configuration v1.x
2

Overview #

eslint-plugin-kuzzle is the Kuzzle coding standard, packaged as ESLint plugins. It is what every Kuzzle project — the core, the official plugins, the SDKs, the consoles — lints with, so that a rule discussion happens once here rather than in every repository.

The repository is a monorepo publishing two independent packages:

PackageFornpm
eslint-plugin-kuzzleNode.js / TypeScript backends, plugins, SDKsnpm
eslint-plugin-vue-kuzzleVue.js 3 frontendsnpm

They do not depend on each other. A full-stack repository installs both, one per workspace.

Batteries included #

Both packages are standalone: everything they compose is a dependency, not a peer dependency. A consuming project installs eslint and the plugin, nothing else.

eslint-plugin-kuzzle ships @eslint/js, eslint-config-prettier, eslint-plugin-prettier, prettier, typescript-eslint and globals. eslint-plugin-vue-kuzzle ships eslint-plugin-vue, @vue/eslint-config-typescript, @vue/eslint-config-prettier, typescript-eslint, eslint-plugin-import and globals.

If your project already depends on @typescript-eslint/eslint-plugin, @typescript-eslint/parser or @vue/eslint-config-standard, remove them. Two copies of typescript-eslint in one lint run produce confusing "rule not found" and duplicate-report errors.

Flat config only #

Both packages are ESM and export flat configs only. .eslintrc.json, extends and the plugin:kuzzle/* syntax are gone — ESLint 9 removed eslintrc support. Configuration lives in an eslint.config.mjs at the root of your project, and every config is a plain array you spread.

// eslint.config.mjs
import kuzzle from 'eslint-plugin-kuzzle';

export default [
  { ignores: ['dist/**'] },
  ...kuzzle.configs.default,
  ...kuzzle.configs.node,
  ...kuzzle.configs.typescript,
];

Requirements #

Node.js^20.19.0 || >=22.12.0
ESLintsee below
TypeScript>=5.2.0 <6.1.0, optional peer dependency

The two packages do not accept the same ESLint range:

PackageESLint
eslint-plugin-kuzzle^9.10.0 || ^10.0.0
eslint-plugin-vue-kuzzle^9.10.0

eslint-plugin-vue-kuzzle is held back by eslint-plugin-import, whose latest release calls a SourceCode method that ESLint 10 removed — the rule crashes the lint run rather than reporting.

Next #