Usage & Features

Frameworks

Configure first-class ESLint support for AdonisJS, Nuxt, Vue, and Astro projects.

@eienjs/eslint-config includes tailored presets for AdonisJS, Nuxt, Vue, and Astro.

When running interactively in a terminal, @eienjs/eslint-config automatically checks whether required optional peer dependencies are installed and prompts to install them if missing.

AdonisJS

Enable AdonisJS support by setting adonisjs: true or passing an OptionsAdonisJS object.

Peer Dependency

pnpm add -D @adonisjs/eslint-plugin

Usage

eslint.config.js
import { eienjs } from '@eienjs/eslint-config';

export default eienjs({
  adonisjs: true,
});

What It Configures

  • Enables @adonisjs/prefer-lazy-controller-import and @adonisjs/prefer-lazy-listener-import.
  • Enables Inertia rules (@adonisjs/no-backend-import-in-frontend, @adonisjs/prefer-adonisjs-inertia-form, @adonisjs/prefer-adonisjs-inertia-link) for files inside the inertia/ directory.
  • Relaxes strict TypeScript and Unicorn rules across standard AdonisJS directories (app/controllers, app/exceptions, app/middleware, app/transformers, app/types, bin, commands, config, database, providers, start, tests) so framework conventions work frictionlessly.

Customizing Directories

You can customize the directory paths if your AdonisJS application uses a non-standard structure:

eslint.config.js
import { eienjs } from '@eienjs/eslint-config';

export default eienjs({
  adonisjs: {
    dirs: {
      controllers: './app/http/controllers',
      inertia: './resources/inertia',
      models: './app/domain/models',
    },
    overrides: {
      '@adonisjs/prefer-lazy-controller-import': 'warn',
    },
  },
});

Supported dirs keys: root, bin, controllers, exceptions, models, mails, services, listeners, events, middleware, transformers, validators, providers, policies, abilities, database, start, tests, config, commands, inertia, and types.


Nuxt

Enable Nuxt support by setting nuxt: true or passing an OptionsNuxt object.

Peer Dependency

pnpm add -D @nuxt/eslint-plugin

Usage

eslint.config.js
import { eienjs } from '@eienjs/eslint-config';

export default eienjs({
  nuxt: true,
});

Options (OptionsNuxt)

OptionTypeDefaultDescription
version3 | 44Target Nuxt major version. Sets default dirs.root to ['./app'] for v4 or ['.'] for v3.
sortConfigKeysbooleantrue (when stylistic is enabled)Enforces nuxt/nuxt-config-keys-order in nuxt.config.*.
dirsobjectBased on versionCustom directories (src, root, pages, layouts, components, componentsPrefixed, composables, plugins, modules, middleware, servers, utils).
overridesRules{}Override Nuxt rules.
eslint.config.js
import { eienjs } from '@eienjs/eslint-config';

export default eienjs({
  nuxt: {
    sortConfigKeys: true,
    version: 4,
  },
});

Vue

Vue support is auto-detected when vue, nuxt, vitepress, or @slidev/cli is installed in your project. You can also configure it explicitly.

Usage

eslint.config.js
import { eienjs } from '@eienjs/eslint-config';

export default eienjs({
  vue: {
    componentNameInTemplateCasingGlobals: ['RouterView', 'RouterLink'],
    componentNameInTemplateCasingIgnores: ['custom-element'],
    componentNameInTemplateCasingOnlyRegistered: false,
    sfcBlocks: true,
  },
});

Key Vue Conventions

  • Enforces <script setup lang="ts"> (vue/component-api-style and vue/block-lang).
  • Enforces block order: <script>, <template>, <style> (vue/block-order).
  • Enforces PascalCase component names in templates (vue/component-name-in-template-casing).
  • Lints <style> and custom SFC blocks via eslint-processor-vue-blocks (sfcBlocks: true).

Astro

Enable Astro support by setting astro: true or passing an overrides object.

Peer Dependencies

pnpm add -D eslint-plugin-astro astro-eslint-parser
# Optional: if using formatters: true
pnpm add -D prettier-plugin-astro

Usage

eslint.config.js
import { eienjs } from '@eienjs/eslint-config';

export default eienjs({
  astro: true,
  formatters: {
    astro: true,
  },
});