ESLint Config iPlayer
raw JSON → 10.0.1 verified Sat Apr 25 auth: no javascript
ESLint configuration for BBC iPlayer projects. Version 10.0.1 requires ESLint 9 and uses FlatConfig (eslint.config.js) instead of the legacy .eslintrc format. Provides presets: base, js, jsx, ts, tsx, legacy. Peer dependencies include eslint >=9.0.0 and typescript >=4.0.0. Breaking change from v9 to v10: switch to FlatConfig; old package.json extends no longer work. Release cadence follows BBC iPlayer needs.
Common errors
error Configuration for rule "no-console" is invalid ↓
cause FlatConfig does not accept legacy rule config format (e.g., array).
fix
Use object format for rule options. Check each rule's schema.
error Cannot find module 'eslint-config-iplayer' ↓
cause Missing peer dependency or wrong extends name without full package name.
fix
Ensure eslint-config-iplayer is installed and use full name in FlatCompat.extends.
Warnings
breaking Version 10 drops support for .eslintrc files and package.json eslintConfig. Must use eslint.config.js with FlatCompat. ↓
fix Switch to FlatConfig as shown in quickstart.
deprecated Legacy extends 'iplayer/base' etc. from .eslintrc are deprecated. Use FlatCompat instead. ↓
fix Use eslint.config.js with FlatCompat.extends('eslint-config-iplayer/base').
gotcha Full package name required in compat.extends: e.g., 'eslint-config-iplayer/tsx' not 'iplayer/tsx'. ↓
fix Always prefix with 'eslint-config-iplayer/'.
Install
npm install eslint-config-iplayer yarn add eslint-config-iplayer pnpm add eslint-config-iplayer Imports
- flat config with compat wrong
module.exports = { extends: 'iplayer/tsx' }correctconst compat = new (require('@eslint/eslintrc').FlatCompat)({ baseDirectory: __dirname }); module.exports = [ { ignores: ['node_modules'] }, ...compat.extends('eslint-config-iplayer/tsx') ]; - import in ESM wrong
import config from 'eslint-config-iplayer'correctimport { FlatCompat } from '@eslint/eslintrc'; const compat = new FlatCompat({ baseDirectory: import.meta.url }); - presets js/jsx/ts/tsx/base/legacy wrong
compat.extends('iplayer')correctcompat.extends('eslint-config-iplayer/tsx')
Quickstart
// Install
npm install --save-dev eslint eslint-config-iplayer @eslint/eslintrc
// eslint.config.js
const { FlatCompat } = require('@eslint/eslintrc');
const path = require('path');
const compat = new FlatCompat({
baseDirectory: __dirname
});
module.exports = [
{
ignores: ['node_modules', 'dist']
},
...compat.extends('eslint-config-iplayer/tsx')
];