Frameworks
@eienjs/eslint-config includes tailored presets for AdonisJS, Nuxt, Vue, and Astro.
@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
import { eienjs } from '@eienjs/eslint-config';
export default eienjs({
adonisjs: true,
});
What It Configures
- Enables
@adonisjs/prefer-lazy-controller-importand@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 theinertia/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:
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
import { eienjs } from '@eienjs/eslint-config';
export default eienjs({
nuxt: true,
});
Options (OptionsNuxt)
| Option | Type | Default | Description |
|---|---|---|---|
version | 3 | 4 | 4 | Target Nuxt major version. Sets default dirs.root to ['./app'] for v4 or ['.'] for v3. |
sortConfigKeys | boolean | true (when stylistic is enabled) | Enforces nuxt/nuxt-config-keys-order in nuxt.config.*. |
dirs | object | Based on version | Custom directories (src, root, pages, layouts, components, componentsPrefixed, composables, plugins, modules, middleware, servers, utils). |
overrides | Rules | {} | Override Nuxt rules. |
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
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-styleandvue/block-lang). - Enforces block order:
<script>,<template>,<style>(vue/block-order). - Enforces
PascalCasecomponent names in templates (vue/component-name-in-template-casing). - Lints
<style>and custom SFC blocks viaeslint-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
import { eienjs } from '@eienjs/eslint-config';
export default eienjs({
astro: true,
formatters: {
astro: true,
},
});
