eslint-config-wikimedia
raw JSON → 0.32.3 verified Sat Apr 25 auth: no javascript
ESLint shareable config following Wikimedia coding conventions. Current stable version is 0.32.3, released November 2025, with Node.js >=20 <25 required. It provides profiles for client, server, MediaWiki extensions, jQuery, QUnit, Mocha, Selenium, Vue, and TypeScript. Distinct from other ESLint configs by enforcing Wikimedia-specific rules (e.g., MediaWiki message documentation, no self-closing Vue tags) and evolving target ES versions (ES2017 for client, ES2022 for server).
Common errors
error Configuration for rule "array-bracket-newline" is invalid ↓
cause Incompatible rule setup when mixing custom rules with Wikimedia config
fix
Remove custom array-bracket-newline rule or adjust to match Wikimedia's preset.
error Cannot read config 'wikimedia/client/es6' ↓
cause Profile aliases changed; es6 subprofile now under client/common/es6
fix
Use 'wikimedia/client/es6' (still valid) or 'wikimedia/client/common/es6'.
error ESLint couldn't find the config "wikimedia" ↓
cause eslint-config-wikimedia not installed or missing from node_modules
fix
Run npm install --save-dev eslint-config-wikimedia
Warnings
breaking Remove ES5 configs in v0.29.0 ↓
fix Update configs that extend 'wikimedia/es5' or similar. No ES5 profiles are available; use a different base.
breaking Drop deprecated compound profile aliases in v0.30.0 ↓
fix Replace 'client-common' with 'client/common', 'mediawiki-qunit' with 'mediawiki/qunit', etc.
breaking Delete vue2 configs in v0.30.0 ↓
fix Use vue3 profiles instead; Vue2 is no longer supported.
breaking Node.js minimum version increased to 20 in v0.32.0 ↓
fix Upgrade Node.js to >=20.0.0.
deprecated Compound profile aliases (e.g., 'client-es6') deprecated since v0.30.0 ↓
fix Use the sub-profile path (e.g., 'client/es6').
gotcha Extending 'wikimedia' alone does not set any environment or ES version ↓
fix Always combine with at least 'wikimedia/client' or 'wikimedia/server' and an ES level profile.
gotcha TypeScript files are automatically linted but require a compile step ↓
fix Ensure TypeScript files are compiled before linting, as the config assumes transpiled code.
Install
npm install eslint-config-wikimedia yarn add eslint-config-wikimedia pnpm add eslint-config-wikimedia Imports
- eslint-config-wikimedia wrong
{ "extends": "eslint-config-wikimedia" }correct{ "extends": "wikimedia" } - client profile wrong
{ "extends": "wikimedia/client-common" }correct{ "extends": "wikimedia/client" } - mediawiki profile wrong
{ "extends": "wikimedia/mediawiki" }correct{ "extends": ["wikimedia/client", "wikimedia/mediawiki"] }
Quickstart
// .eslintrc.json
{
"root": true,
"extends": [
"wikimedia/client",
"wikimedia/jquery"
],
"env": {
"browser": true,
"jquery": true
},
"globals": {
"$": "readonly"
},
"rules": {
"no-console": "warn"
}
}