@jmlweb/eslint-config-base-js
v2.0.2
Published
Base ESLint configuration for JavaScript-only projects - foundation extended by @jmlweb/eslint-config-base
Maintainers
Readme
@jmlweb/eslint-config-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
- 🎯 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
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
// eslint.config.js
import baseJsConfig from '@jmlweb/eslint-config-base-js';
export default [
...baseJsConfig,
// Project-specific overrides
];💡 Examples
Overrides and ignores
// eslint.config.js
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
// eslint.config.js
import baseJsConfig from '@jmlweb/eslint-config-base-js';
import globals from 'globals';
export default [
...baseJsConfig,
{
languageOptions: {
globals: globals.node,
},
},
];Browser globals
// eslint.config.js
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
| 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
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
- ✅ 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
Spread the config, then add objects after it. Later entries win.
// eslint.config.js
import baseJsConfig from '@jmlweb/eslint-config-base-js';
export default [
...baseJsConfig,
{
files: ['**/*.test.js'],
rules: {
'no-console': 'off',
},
},
];📝 Usage with Scripts
{
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint . --fix"
}
}npm run lint📋 Requirements
- Node.js >= 22.12.0
- ESLint ^9.0.0 || ^10.0.0 (flat config)
📦 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
@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
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
MIT
