Skip to content

ben12/eslint-plugin-dprint

 
 

Repository files navigation

eslint-plugin-dprint

GitHub npm version Downloads/month
node-current npm peer dependency version (scoped) npm bundle size
Build Status codecov Quality Gate Status Quality Gate Quality Gate

This is an updated fork of mysticatea/eslint-plugin-dprint. Some things are still being adjusted.

The plugin that runs dprint to format code in ESLint.

💿 Installation

Use npm or a compatible tool.

$ npm install -D eslint @ben_12/eslint-plugin-dprint

Then install dprint plugin for the language to format.

$ npm install -D @dprint/dockerfile
$ npm install -D @dprint/json
$ npm install -D @dprint/markdown
$ npm install -D @dprint/toml
$ npm install -D @dprint/typescript
$ npm install -D dprint-plugin-malva
$ npm install -D dprint-plugin-markup
$ npm install -D dprint-plugin-yaml
$ npm install -D dprint-plugin-graphql

npm peer dependency version (scoped) npm peer dependency version (scoped) npm peer dependency version (scoped) npm peer dependency version (scoped) npm peer dependency version (scoped) npm peer dependency version (scoped) npm peer dependency version (scoped) npm peer dependency version (scoped) npm peer dependency version (scoped)

📖 Usage

Write your ESLint configuration. For example with typescript code:

From eslint v9 (flat configuration)

import tsPlugin from "@typescript-eslint/eslint-plugin";
import tsParser from "@typescript-eslint/parser";
import dprint from "@ben_12/eslint-plugin-dprint";

module.exports = {
  files: ["**/*.ts", "**/*.js"],

  languageOptions: {
      parser: tsParser
  },

  plugins: {
      "@typescript-eslint": tsPlugin,
      "@ben_12/dprint": dprint,
  },

  rules: {
    ...tsPlugin.configs["eslint-recommended"].rules,
    ...tsPlugin.configs["recommended"].rules,
    ...tsPlugin.configs["strict"].rules,
    ...dprint.configs["typescript-recommended"].rules
    "@ben_12/dprint/typescript": [
      "error",
      {
        // Use dprint JSON configuration file (default: "dprint.json")
        // It may be created using `dprint init` command
        // See also https://dprint.dev/config/
        configFile: "dprint.json",
        config: {
          // The TypeScript configuration of dprint
          // See also https://dprint.dev/plugins/typescript/config/
        },
      },
    ],
  },
};

For old eslint (eslintrc configuration)

module.exports = {
  extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:@ben_12/dprint/typescript-recommended"],
  rules: {
    "@ben_12/dprint/typescript": [
      "error",
      {
        // Use dprint JSON configuration file (default: "dprint.json")
        // It may be created using `dprint init` command
        // See also https://dprint.dev/config/
        configFile: "dprint.json",
        config: {
          // The TypeScript configuration of dprint
          // See also https://dprint.dev/plugins/typescript/config/
        },
      },
    ],
  },
};

Then run ESLint with --fix!

For unparsed eslint file like markdown or dockerfile, you can use @ben_12/eslint-simple-parser as parser.

import dprint from "@ben_12/eslint-plugin-dprint"
import simpleParser from "@ben_12/eslint-simple-parser"

export default [{
    files: ["**/*.md"],
    plugins: {
        "@ben_12/dprint": dprint,
    },
    languageOptions: {
        parser: simpleParser,
    },
    rules: dprint.configs["markdown-recommended"].rules,
}]

Available Rules

Rule Description
@ben_12/dprint/dockerfile Format dockerfile code with @dprint/dockerfile.
@ben_12/dprint/json Format json code with @dprint/json.
@ben_12/dprint/markdown Format markdown code with @dprint/markdown.
@ben_12/dprint/toml Format toml code with @dprint/toml.
@ben_12/dprint/typescript Format typescript code with @dprint/typescript.
@ben_12/dprint/malva Format css/scss/less/sass code with malva.
@ben_12/dprint/markup Format HTML/Vue/Svelte/... code with markup_fmt.
@ben_12/dprint/yaml Format YAML code with pretty_yaml.
@ben_12/dprint/graphql Format GraphQL code with pretty_graphql.

Available Configs

Config Description
plugin:@ben_12/dprint/disable-typescript-conflict-rules Disable rules where are conflicted with the @ben_12/dprint/typescript rule.
plugin:@ben_12/dprint/dockerfile-recommended Enable the @ben_12/dprint/dockerfile rule.
plugin:@ben_12/dprint/json-recommended Enable the @ben_12/dprint/json rule.
plugin:@ben_12/dprint/markdown-recommended Enable the @ben_12/dprint/markdown rule.
plugin:@ben_12/dprint/toml-recommended Enable the @ben_12/dprint/toml rule.
plugin:@ben_12/dprint/typescript-recommended Enable the @ben_12/dprint/typescript rule along with the plugin:@ben_12/dprint/disable-typescript-conflict-rules preset.
plugin:@ben_12/dprint/malva-recommended Enable the @ben_12/dprint/malva rule.
plugin:@ben_12/dprint/markup-recommended Enable the @ben_12/dprint/markup rule.
plugin:@ben_12/dprint/yaml-recommended Enable the @ben_12/dprint/yaml rule.
plugin:@ben_12/dprint/graphql-recommended Enable the @ben_12/dprint/graphql rule.
  • Put the [plugin:@ben_12/dprint/recommended] or [plugin:@ben_12/dprint/disable-conflict-rules] config into the last of your extends list in order to ensure disabling conflict rules where came from other base configurations.

📰 Changelog

See GitHub Releases.

❤️ Contributing

Welcome contributing!

Please use GitHub's Issues/PRs.

Development Tools

  • npm test ... Run tests. It generates code coverage into coverage directory.
  • npm run watch ... Run tests when files are edited.
  • npm version <patch|minor|major> ... Bump a new version.