CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-stylistic--eslint-plugin-ts

TypeScript stylistic rules for ESLint providing comprehensive code style enforcement for modern ESLint configurations.

Pending
Overview
Eval results
Files

plugin-configuration.mddocs/

Plugin Configuration

Plugin configuration capabilities for integrating @stylistic/eslint-plugin-ts with ESLint, including predefined configuration presets and individual rule access.

Capabilities

Main Plugin Export

The default export provides the complete plugin object with rules and configurations.

/**
 * Main plugin export containing rules and configuration presets
 */
declare const plugin: {
  rules: Rules;
  configs: {
    "disable-legacy": Linter.Config;
    "all": Linter.Config;
    "all-flat": Linter.Config;
  };
};

export default plugin;

Usage Examples:

import stylistic from "@stylistic/eslint-plugin-ts";

// Basic plugin registration
export default [
  {
    plugins: {
      "@stylistic/ts": stylistic,
    },
    rules: {
      "@stylistic/ts/indent": ["error", 2],
      "@stylistic/ts/quotes": ["error", "single"],
    },
  },
];

// Access individual rules
const indentRule = stylistic.rules.indent;

Configuration Presets

Pre-configured ESLint configurations for common use cases.

interface ConfigPresets {
  /** Disable all legacy TypeScript formatting rules from @typescript-eslint */
  "disable-legacy": Linter.Config;
  /** Enable all stylistic rules with default settings */
  "all": Linter.Config;
  /** @deprecated use 'all' instead - Enable all stylistic rules */
  "all-flat": Linter.Config;
}

Disable Legacy Configuration

Disables all legacy @typescript-eslint formatting rules to prevent conflicts.

/**
 * Configuration that disables all legacy @typescript-eslint formatting rules
 * Use this to prevent conflicts when migrating from @typescript-eslint
 */
declare const disableLegacy: Linter.Config;

Usage Examples:

import stylistic from "@stylistic/eslint-plugin-ts";

// Disable legacy rules
export default [
  stylistic.configs["disable-legacy"],
  {
    plugins: {
      "@stylistic/ts": stylistic,
    },
    rules: {
      "@stylistic/ts/indent": ["error", 2],
    },
  },
];

All Rules Configuration

Enables all stylistic rules with their default settings.

/**
 * Configuration that enables all stylistic rules
 * Recommended for comprehensive style enforcement
 */
declare const allConfig: Linter.Config;

Usage Examples:

import stylistic from "@stylistic/eslint-plugin-ts";

// Enable all rules with defaults
export default [stylistic.configs.all];

// Combine with custom overrides
export default [
  stylistic.configs.all,
  {
    rules: {
      "@stylistic/ts/indent": ["error", 4], // Override default indent
      "@stylistic/ts/quotes": "off", // Disable quotes rule
    },
  },
];

Individual Rule Access

Direct access to specific rules for custom configurations.

/**
 * Access individual rules from the plugin
 * Each rule is a standard ESLint Rule.RuleModule
 */
interface RuleAccess {
  rules: {
    [ruleName: string]: Rule.RuleModule;
  };
}

Usage Examples:

import stylistic from "@stylistic/eslint-plugin-ts";
import indentRule from "@stylistic/eslint-plugin-ts/rules/indent";

// Direct rule import
export default [
  {
    plugins: {
      "@stylistic/ts": stylistic,
    },
    rules: {
      "@stylistic/ts/indent": ["error", 2],
    },
  },
];

// Using directly imported rule
const customConfig = {
  plugins: {
    "custom-indent": indentRule,
  },
  rules: {
    "custom-indent": ["error", 4],
  },
};

Configuration Examples

Basic Setup

import stylistic from "@stylistic/eslint-plugin-ts";

export default [
  {
    plugins: {
      "@stylistic/ts": stylistic,
    },
    rules: {
      // Spacing rules
      "@stylistic/ts/block-spacing": "error",
      "@stylistic/ts/comma-spacing": "error",
      "@stylistic/ts/key-spacing": "error",
      
      // Style rules
      "@stylistic/ts/brace-style": ["error", "1tbs"],
      "@stylistic/ts/indent": ["error", 2],
      "@stylistic/ts/quotes": ["error", "single"],
      "@stylistic/ts/semi": ["error", "always"],
    },
  },
];

Migration from @typescript-eslint

import stylistic from "@stylistic/eslint-plugin-ts";

export default [
  // First disable legacy rules
  stylistic.configs["disable-legacy"],
  
  // Then configure stylistic rules
  {
    plugins: {
      "@stylistic/ts": stylistic,
    },
    rules: {
      "@stylistic/ts/member-delimiter-style": [
        "error",
        {
          multiline: { delimiter: "semi" },
          singleline: { delimiter: "semi" },
        },
      ],
      "@stylistic/ts/type-annotation-spacing": "error",
    },
  },
];

Comprehensive Style Enforcement

import stylistic from "@stylistic/eslint-plugin-ts";

export default [
  // Start with all rules
  stylistic.configs.all,
  
  // Customize specific rules
  {
    rules: {
      // Adjust indentation
      "@stylistic/ts/indent": ["error", 4],
      
      // Prefer single quotes
      "@stylistic/ts/quotes": ["error", "single"],
      
      // Require semicolons
      "@stylistic/ts/semi": ["error", "always"],
      
      // Configure member delimiters
      "@stylistic/ts/member-delimiter-style": [
        "error",
        {
          multiline: {
            delimiter: "semi",
            requireLast: true,
          },
          singleline: {
            delimiter: "semi",
            requireLast: false,
          },
        },
      ],
    },
  },
];

Install with Tessl CLI

npx tessl i tessl/npm-stylistic--eslint-plugin-ts

docs

index.md

plugin-configuration.md

stylistic-rules.md

tile.json