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.

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.
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/'.
npm install eslint-config-iplayer
yarn add eslint-config-iplayer
pnpm add eslint-config-iplayer

Shows how to set up ESLint 9 FlatConfig with eslint-config-iplayer v10 using FlatCompat for TypeScript+JSX.

// 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')
];