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.
| Name | Description |
|---|---|
eslint-lumir/js | JavaScript configuration. |
eslint-lumir/ts | TypeScript configuration. |
eslint-lumir/jsx | JavaScript and React configuration. |
eslint-lumir/tsx | TypeScript and React configuration. |
eslint-lumir/next | Next.js rules to combine with jsx or tsx. |
eslint-lumir/json | JSON configuration. |
eslint-lumir/jsonc | JSONC configuration. |
eslint-lumir/json5 | JSON5 configuration. |
eslint-lumir/md | Markdown configuration. |
eslint-lumir/package.json | Package 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 thenextconfiguration)- Module Support: ECMAScript Modules (ESM) Only
NOTE
eslint-lumirrequires ESLint^10.3.0for compatibility with@eslint-react/eslint-plugin, which is used by its React configurations.
Install
npm install -D eslint@latest eslint-lumir@latestpnpm add -D eslint@latest eslint-lumir@latestyarn add --dev eslint@latest eslint-lumir@latestbun add -d eslint@latest eslint-lumir@latestESLint 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.
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:
npm install -D "@next/eslint-plugin-next@^16.3.0"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.
| Prefix | Original Prefix | Source 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.