Skip to content

eslint-lumir ​

Lumir's ESLint configuration presets.

Internal Workspace

This package is currently marked as private and excluded from npm publishing. It will be made public once it's ready for release.

eslint-lumir provides shared ESLint configurations for JavaScript, TypeScript, React, Next.js, JSON, and Markdown. Its presets are inspired by the Airbnb JavaScript Style Guide. All rules are configured as either error or off, never warn.

Config Inspector ​

If you want to inspect the ESLint configuration for eslint-lumir, use the config inspector.

Exports ​

The package provides subpath exports primarily for individual configurations and has no main entrypoint.

NameDescription
eslint-lumir/jsJavaScript configuration.
eslint-lumir/tsTypeScript configuration.
eslint-lumir/jsxJavaScript and React configuration.
eslint-lumir/tsxTypeScript and React configuration.
eslint-lumir/nextNext.js rules to combine with jsx or tsx.
eslint-lumir/jsonJSON configuration.
eslint-lumir/jsoncJSONC configuration.
eslint-lumir/json5JSON5 configuration.
eslint-lumir/mdMarkdown configuration.
eslint-lumir/package.jsonPackage metadata.

Installation ​

Prerequisites ​

  • Node.js: ^20.19.0 || ^22.13.0 || >=24.0.0
  • ESLint: ^10.3.0 & Flat Config Only
  • @next/eslint-plugin-next: ^16.3.0 (optional peer dependency; required only for the next configuration)
  • Module Support: ECMAScript Modules (ESM) Only

NOTE

Install ​

sh
npm install -D eslint@latest eslint-lumir@latest
sh
pnpm add -D eslint@latest eslint-lumir@latest
sh
yarn add --dev eslint@latest eslint-lumir@latest
sh
bun add -d eslint@latest eslint-lumir@latest

ESLint Configuration ​

Select the configurations required by your project. For the exact rules included in each configuration, see the ESLint configurations.

Subpath Imports ​

Use subpath imports to load only the configurations you need. This can help reduce startup time.

eslint.config.mjs
js
import { defineConfig } from 'eslint/config';
import js from 'eslint-lumir/js';
import ts from 'eslint-lumir/ts';
import jsx from 'eslint-lumir/jsx';
import tsx from 'eslint-lumir/tsx';
import next from 'eslint-lumir/next';
import json from 'eslint-lumir/json';
import jsonc from 'eslint-lumir/jsonc';
import json5 from 'eslint-lumir/json5';
import md from 'eslint-lumir/md';
import pkg from 'eslint-lumir/package.json' with { type: 'json' };

export default defineConfig([
  js, // JavaScript
  ts, // TypeScript
  jsx, // JavaScript + React
  tsx, // TypeScript + React
  next, // Next.js
  json, // JSON
  jsonc, // JSONC
  json5, // JSON5
  md, // Markdown
]);

Next.js configuration ​

The next configuration adds Next.js rules to jsx or tsx. Install its optional peer dependency explicitly in the project that uses this configuration:

sh
npm install -D "@next/eslint-plugin-next@^16.3.0"
eslint.config.mjs
js
import { defineConfig } from 'eslint/config';
import jsx from 'eslint-lumir/jsx';
import tsx from 'eslint-lumir/tsx';
import next from 'eslint-lumir/next';

export default defineConfig([jsx, tsx, next]);

Use [jsx, next] for JavaScript, [tsx, next] for TypeScript, or [jsx, tsx, next] for mixed projects.

Plugins Renaming ​

Flat config lets us explicitly choose plugin names instead of deriving them from npm package names. We rename some plugins to make rule prefixes more consistent and easier to write.

PrefixOriginal PrefixSource Plugin
import/*import-lite/*eslint-plugin-import-lite
node/*n/*eslint-plugin-n
typescript/*@typescript-eslint/*@typescript-eslint/eslint-plugin
react-x/*@eslint-react/*@eslint-react/eslint-plugin
next/*@next/next/*@next/eslint-plugin-next
jsx-a11y-x/*jsx-a11y-x/*eslint-plugin-jsx-a11y-x
json/*json/*@eslint/json
markdown/*markdown/*@eslint/markdown
md/*md/*eslint-markdown
style/*-Internal rules provided by eslint-lumir.

Use the prefixes in the first column when overriding rules, for example typescript/no-unused-vars or node/no-process-exit.

The import/* namespace also includes internal rules. The style/* namespace contains the internal style/spaced-comment rule, rather than the @stylistic/eslint-plugin package. This helps reduce the overall dependency footprint.