Skip to content

@studnicky/eslint-config

Standard ESLint plugin for TypeScript projects. Ships two namespaced rule sets — plugin (26 @studnicky rules) and v8Plugin (27 @studnicky/v8 rules) — plus domain-grouped suites.

Install

Add the GitHub Packages registry to .npmrc:

@studnicky:registry=https://npm.pkg.github.com
sh
pnpm add -D @studnicky/eslint-config

Install peer dependencies:

sh
pnpm add -D eslint@>=10 typescript-eslint@>=8 @typescript-eslint/eslint-plugin@>=8 @typescript-eslint/parser@>=8 @stylistic/eslint-plugin@>=5 eslint-plugin-import-x@>=4 eslint-plugin-perfectionist@>=5 eslint-plugin-regexp@>=3 eslint-plugin-unused-imports@>=4 typescript@>=6

Usage

js
// eslint.config.mjs
import { plugin, v8Plugin } from '@studnicky/eslint-config';

export default [
  {
    plugins: { '@studnicky': plugin, '@studnicky/v8': v8Plugin },
    rules: {
      '@studnicky/type-alias-invariants': 'error',
      '@studnicky/v8/array-spread-outside-loops': 'error'
    }
  }
];

Try it

ts
import { plugin, v8Plugin } from '../src/index.js';

const config = {
  'plugins': {
    '@studnicky': plugin,
    '@studnicky/v8': v8Plugin
  },
  'rules': {
    '@studnicky/type-alias-invariants': 'error'
  }
};

const pluginRuleCount = Object.keys(plugin.rules).length;
const v8PluginRuleCount = Object.keys(v8Plugin.rules).length;

console.log(`@studnicky plugin rules: ${pluginRuleCount}`);
console.log(`@studnicky/v8 plugin rules: ${v8PluginRuleCount}`);
console.log(`Config plugins registered: ${Object.keys(config.plugins).join(', ')}`);
Loading example…

The output shows both plugins registered under their namespaced keys and the actual rule counts read back from plugin.rules/v8Plugin.rules.

Public API

Import plugin, v8Plugin, entitySuite, hygieneSuite, v8Suite, and HexagonalSuite from @studnicky/eslint-config. Individual rule objects are available through plugin.rules[ruleId] and v8Plugin.rules[ruleId].

Rule reference

Full documentation for all 53 custom rules is in the ESLint Plugins section:

Exports

SymbolPurposeImport path
pluginProvides the @studnicky ESLint plugin.@studnicky/eslint-config
v8PluginProvides the @studnicky/v8 ESLint plugin.@studnicky/eslint-config
entitySuiteProvides entity-focused configuration rules.@studnicky/eslint-config
hygieneSuiteProvides code-hygiene configuration rules.@studnicky/eslint-config
HexagonalSuiteProvides hexagonal-architecture configuration rules.@studnicky/eslint-config
v8SuiteProvides V8 performance configuration rules.@studnicky/eslint-config

Source on GitHub