Provides shared ESLint v9 flat-config presets for PlugJS projects. It’s the easiest way to share consistent rules and plugins across repos.
Just create a new eslint.config.mjs
file following this template, your mileage
might vary, and according to your specific needs you might need to add/remove
stuff to fit your project:
import configurations from '@plugjs/eslint-plugin'
export default [
...configurations,
// ===== DEFINE THE LOCATION OF OUR TSCONFIG.JSON FILES ======================
{
name: 'local/options',
languageOptions: {
parserOptions: {
createDefaultProgram: false,
project: [
'./tsconfig.json',
'./test/tsconfig.json',
],
},
},
},
// ===== ENSURE THAT OUR MAIN FILES DEPEND ONLY ON PROPER DEPENDENCIES =======
{
name: 'local/imports',
files: [ 'src/**' ],
rules: {
// Turn _ON_ dependencies checks only for sources
'import-x/no-extraneous-dependencies': [ 'error', {
'devDependencies': false,
'optionalDependencies': false,
'peerDependencies': true,
'bundledDependencies': false,
} ],
},
},
// ===== PROJECT LOCAL RULES =================================================
// Add any extra rule not tied to a specific "files" pattern here, e.g.:
// {
// name: 'local/rules',
//
// rules: {
// 'camelcase': 'off',
// },
// },
// ===== IGNORED FILES =======================================================
// REMEMBER! Ignores *must* be in its own configuration, they can not coexist
// with "rules", "languageOptions", "files", ... or anything else (ESLint v9
// flat config). Otherwise ESLint will blatantly ignore the ignored files!
{
name: 'local/ignores',
ignores: [
'coverage/',
'dist/',
'node_modules/',
],
},
]
This includes a number of individual configurations:
-
plugjs/basic/base
: basic configuration of ESLint rules. -
plugjs/basic/stylistic
: style shared between JavaScript and TypeScript. -
plugjs/basic/unicorn
: extra niceties from the ESLint Unicorn plugin. -
plugjs/basic/importx
: defines the style of our imports. -
plugjs/javascript/shared
: shared configuration for JavaScript files. -
plugjs/javascript/commonjs
: marks*.cjs
files ascommonjs
. -
plugjs/javascript/modules
: marks*.mjs
files asmodule
. -
plugjs/typescript/plugin
: defines the "@typescript-eslint" plugin. -
plugjs/typescript/options
: configuration for "@typescript-eslint". -
plugjs/typescript/overrides
: our rules overriding recommended.
A set of grouped configurations are also available:
plugjs/basic
: basic rules shared between JavaScript and TypeScript.- includes all
plugjs/basic/...
individual configurations
- includes all
plugjs/javascript
: rules specific to JavaScript code bases.- includes all
plugjs/javascript/...
individual configurations
- includes all
plugjs/typescript
: rules specific to TypeScript code bases.- includes all
plugjs/typescript/...
individual configurations and... - ...other rules from
typescript-eslint/recommended
: all other recommended Typescript rules, restricted to.ts
,.cts
, and.mts
files.
- includes all
The default configuration exported by the plugin includes all the configurations
listed above and the base eslint/js/recommended
configuration from ESLint.