eslint-config-plus-prettier
raw JSON → 4.2.11 verified Fri May 01 auth: no javascript
ESLint shareable config that bundles ESLint, Prettier, and npm-package-json-lint into a single dependency. Current stable version 4.2.11 includes flat config support for ESLint v9+, TypeScript parsing via @typescript-eslint, import sorting with simple-import-sort, unused imports removal, and separate Prettier/npm-package-json-lint configs. Differentiates from alternatives like eslint-config-prettier by also providing opinionated lint rules (double quotes, semicolons, trailing commas) and optional strict TypeScript TSConfig. Offers two package lint profiles: one for libraries (requiring version range) and one for applications (allowing fixed versions).
Common errors
error Error: Failed to load plugin 'unused-imports' declared in 'eslint-config-plus-prettier': Cannot find module 'eslint-plugin-unused-imports' ↓
cause Missing peer dependency for the unused-imports plugin.
fix
Install eslint-plugin-unused-imports: npm install --save-dev eslint-plugin-unused-imports
error Error: .eslintrc.cjs: Environment key "es2022" is unknown ↓
cause Using legacy .eslintrc format with v4 which requires flat config.
fix
Switch to eslint.config.js (flat config) and upgrade to ESLint v9.
error TypeError: config is not a function or tuple ↓
cause Incorrect import or export of config in eslint.config.js.
fix
Ensure eslint.config.js contains: import config from 'eslint-config-plus-prettier'; export default [config];
error Parsing error: Cannot find module 'typescript' ↓
cause TypeScript is not installed as a devDependency.
fix
Install TypeScript: npm install --save-dev typescript
Warnings
breaking v4 requires ESLint v9+ with flat config; does not support .eslintrc files. ↓
fix Upgrade to ESLint v9 and use eslint.config.js (flat config).
breaking v4 is ESM-only; CommonJS projects must rename config file to eslint.config.cjs or use dynamic import. ↓
fix Rename eslint.config.js to eslint.config.cjs and use module.exports or require().
deprecated v3 uses legacy .eslintrc format; v4 uses flat config. v3 may stop receiving updates. ↓
fix Update to v4 and migrate to flat config.
gotcha Prettier config reference in package.json is a string path, not a require/import. ↓
fix Use "prettier": "eslint-config-plus-prettier/prettier" in package.json.
gotcha npm-package-json-lint config must be in .npmpackagejsonlintrc.json, not via import. ↓
fix Create a .npmpackagejsonlintrc.json file with extends field.
gotcha TypeScript support requires a separate tsconfig.json that extends the provided config; ESLint config already handles TS parsing. ↓
fix Create tsconfig.json with extends: 'eslint-config-plus-prettier/tsconfig'.
Install
npm install eslint-config-plus-prettier yarn add eslint-config-plus-prettier pnpm add eslint-config-plus-prettier Imports
- default export (config array) wrong
const config = require('eslint-config-plus-prettier')correctimport config from 'eslint-config-plus-prettier' - Prettier config reference wrong
import prettier from 'eslint-config-plus-prettier/prettier'correctadd '"prettier": "eslint-config-plus-prettier/prettier"' to package.json - npm-package-json-lint config wrong
import packagelint from 'eslint-config-plus-prettier/packagelint'correctIn .npmpackagejsonlintrc.json: { "extends": "eslint-config-plus-prettier/packagelint" } - TypeScript TSConfig extends wrong
import tsconfig from 'eslint-config-plus-prettier/tsconfig'correctIn tsconfig.json: { "extends": "eslint-config-plus-prettier/tsconfig" }
Quickstart
# Install as devDependency
npm install --save-dev --save-exact eslint-config-plus-prettier
# package.json
{
"type": "module",
"scripts": {
"format": "prettier --write .",
"format:check": "prettier --check .",
"lint": "eslint --fix",
"lint:check": "eslint",
"package:lint": "npx npm-package-json-lint ."
}
}
# eslint.config.js
import config from "eslint-config-plus-prettier";
export default [config];
# package.json (add prettier config)
{
"prettier": "eslint-config-plus-prettier/prettier"
}