@yungezeit/eslint-base v0.0.19
@yungezeit/eslint-base
Personal ESLint flat base configuration.
!NOTE This preset is used as a dependency by all other presets in this repository. Therefore if you plan on using e.g.
@yungezeit/eslint-vue
or@yungezeit/eslint-typescript
, in your project, you don't need to explicitly install this preset.
Features
- Lint ES modules based on
@eslint/js
's recommended rules. - Lint regexes within ES modules using
eslint-plugin-regexp
and its recommended rules. - Lint JSON and JSONc files using
eslint-plugin-jsonc
and its recommended rules. - Lint YAML files using
eslint-plugin-yml
and its recommended rules. - Lint code inside Markdown files using
eslint-plugin-markdown
and its recommended rules. - Lint and sort
package.json
properties to structural consistency. - Uses
eslint-plugin-import
to lint import/export statements.
Install
# using pnpm
pnpm add -D @yungezeit/eslint-base
# using npm
npm add -D @yungezeit/eslint-base
# using yarn
yarn add -D @yungezeit/eslint-base
# using bun
bun add -D @yungezeit/eslint-base
Usage
Raw configuration
You may simply spread the raw configuration array:
// eslint.config.js
import basePreset from '@yungezeit/eslint-base';
export default [...basePreset];
Configuration function
Alternatively, you can use the createBaseConfig
function to create a base ESLint configuration array. Using this function lets you tweak the base configuration behaviour by passing some options as a second argument.
// eslint.config.js
import { createBaseConfig } from '@yungezeit/eslint-base';
export default createBaseConfig([ /** Your configs… */], {
/** (optional) Internal patterns passed to `enforceImportOrder` (see below). */
internalPatterns: [],
/** (optional) Should node environment be supported? */
node: true,
});
VSCode
You may want to add the following settings to your .vscode/settings.json
:
{
// Turn on ESLint for preset's supported languages if needed.
"eslint.validate": [
"javascript", "javascriptreact",
"json", "jsonc", "json5", "markdown", "yaml",
],
// If you want ESLint to autofix problems on save.
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
}
}
Imports order
enforceImportOrder(internalPatterns?: string[])
This function creates a configuration with an import/order
rule that enforces :
1. a specific order of import groups
2. new lines between import groups
2. alphabetized imports
Here's the expected order of import groups :
1. "builtin"
: builtin node modules.
2. "external"
: external modules (deps).
3. "internal"
: internal modules (your own modules).
4. "parent"
, "index"
and "sibling"
: relative imports.
You may pass an array of minimatch patterns to match imports that should be considered internal.
Example configuration
import { enforceImportOrder } from '@yungezeit/eslint-base';
const config = enforceImportOrder(['#database', '@components/**']);
Example output
import fs from 'node:fs';
import chalk from 'chalk';
import { minimatch } from 'minimatch';
import { database, tables } from '#database';
import { Button } from '@components/button';
import { Input } from '@components/input';
import { foo } from '../parent';
import { bar, baz } from '.';
import { bro } from './sibling';
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
11 months ago
11 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago