base-js
> Base ESLint flat config for JavaScript-only projects. Foundation extended by @jmlweb/eslint-config-base.
> ๐ง Maintenance mode: only dependency and security updates, no new rules. For new projects use @jmlweb/oxlint-config-base. To move an existing project, see the migration guide.
โจ Features
Section titled โโจ Featuresโ- ๐ฏ Recommended rules:
@eslint/jsrecommended for modern JavaScript (ES modules) - ๐ฆ Import sorting: imports and exports sorted by
eslint-plugin-simple-import-sort - ๐จ Prettier compatible: disables rules that conflict with Prettier
- ๐ Environment agnostic: no Node.js or browser globals by default
- ๐ง Composable: extended by the TypeScript, React, Node.js and Astro configs
๐ฆ Installation
Section titled โ๐ฆ Installationโnpm install --save-dev @jmlweb/eslint-config-base-js eslint @eslint/js eslint-config-prettier eslint-plugin-simple-import-sort> ๐ก Upgrading? See the Migration Guide.
๐ Quick Start
Section titled โ๐ Quick Startโimport baseJsConfig from '@jmlweb/eslint-config-base-js';
export default [ ...baseJsConfig, // Project-specific overrides];๐ก Examples
Section titled โ๐ก ExamplesโOverrides and ignores
Section titled โOverrides and ignoresโimport baseJsConfig from '@jmlweb/eslint-config-base-js';
export default [ ...baseJsConfig, { files: ['**/*.test.js', '**/*.spec.js'], rules: { 'no-console': 'off', }, }, { ignores: ['dist/', 'build/', 'node_modules/'], },];Node.js globals
Section titled โNode.js globalsโimport baseJsConfig from '@jmlweb/eslint-config-base-js';import globals from 'globals';
export default [ ...baseJsConfig, { languageOptions: { globals: globals.node, }, },];Browser globals
Section titled โBrowser globalsโimport baseJsConfig from '@jmlweb/eslint-config-base-js';import globals from 'globals';
export default [ ...baseJsConfig, { languageOptions: { globals: globals.browser, }, },];globals is not a peer dependency; install it with npm install --save-dev globals.
๐ Configuration Details
Section titled โ๐ Configuration Detailsโ| Setting | Value |
|---|---|
| Files | **/*.js, **/*.mjs, **/*.cjs |
ecmaVersion |
latest |
sourceType |
module |
| Rules | @eslint/js recommended |
| Import sorting | simple-import-sort/imports: error |
| Export sorting | simple-import-sort/exports: error |
| Prettier | eslint-config-prettier rules applied |
๐ Import Sorting
Section titled โ๐ Import SortingโImports are grouped as side effects, Node.js built-ins and external packages, internal absolute imports, then relative imports.
Before:
import './styles.css';import { Component } from './component';import React from 'react';import fs from 'fs';After eslint --fix:
import './styles.css';import fs from 'fs';import React from 'react';import { Component } from './component';๐ฏ When to Use
Section titled โ๐ฏ When to Useโ- โ JavaScript-only projects (no TypeScript)
- โ Modern ESLint 9 or 10 flat config
- โ A foundation for your own shared config
For TypeScript projects use @jmlweb/eslint-config-base. For new projects of any kind prefer @jmlweb/oxlint-config-base.
๐ง Extending the Configuration
Section titled โ๐ง Extending the ConfigurationโSpread the config, then add objects after it. Later entries win.
import baseJsConfig from '@jmlweb/eslint-config-base-js';
export default [ ...baseJsConfig, { files: ['**/*.test.js'], rules: { 'no-console': 'off', }, },];๐ Usage with Scripts
Section titled โ๐ Usage with Scriptsโ{ "scripts": { "lint": "eslint .", "lint:fix": "eslint . --fix" }}npm run lint๐ Requirements
Section titled โ๐ Requirementsโ- Node.js >= 22.12.0
- ESLint ^9.0.0 || ^10.0.0 (flat config)
๐ฆ Peer Dependencies
Section titled โ๐ฆ Peer Dependenciesโeslint(^9.0.0 || ^10.0.0)@eslint/js(^9.0.0 || ^10.0.0)eslint-config-prettier(^9.1.0 || ^10.0.0)eslint-plugin-simple-import-sort(^12.0.0 || ^13.0.0 || ^14.0.0)
No typescript-eslint needed.
๐ Related Packages
Section titled โ๐ Related Packagesโ@jmlweb/eslint-config-base: TypeScript config that extends this package (maintenance mode)@jmlweb/oxlint-config-base: Oxlint equivalent, recommended for new projects@jmlweb/prettier-config-base: Prettier config (maintenance mode)
๐ Migration Guide
Section titled โ๐ Migration Guideโ1.x to 2.0
Section titled โ1.x to 2.0โNode.js 18 and 20 are end-of-life. Node.js >= 22.12.0 is now required: it is the first Node.js 22 release that can require() ES modules without a flag, which the CommonJS build needs to load ESM-only plugins.
- Upgrade Node.js to 22.12.0 or later.
- Update the package:
npm install --save-dev @jmlweb/eslint-config-base-js@latest.
See the Changelog.
๐ License
Section titled โ๐ LicenseโMIT