JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 372317
  • Score
    100M100P100Q168103F
  • License MIT

Comment-as-command for one-off codemod with ESLint

Package Exports

  • eslint-plugin-command
  • eslint-plugin-command/commands
  • eslint-plugin-command/config
  • eslint-plugin-command/package.json
  • eslint-plugin-command/types

Readme

eslint-plugin-command

npm version npm downloads

Documentations

Comment-as-command for one-off codemod with ESLint.

https://github.com/antfu/eslint-plugin-command/assets/11247099/ec401a21-4081-42d0-8748-9d0376b7d501

Introduction

ESLint Plugin Command is a special kind of ESLint plugin, that by default, does nothing. Instead of checking for code quality, it serves as a micro-codemod tool triggers by special comments on-demand, resuse the infrastructure of ESLint.

For example, one of the built-in commands, /// to-function allows you to convert a single arrow function expression to a function declaration.

/// to-function
const foo = async <T>(msg: T): void => {
  console.log(msg)
}

Will be transformed to this when you hit save with your editor or run eslint . --fix. After executing the command, the comment will also be removed along with the transformation:

async function foo<T>(msg: T): void {
  console.log(msg)
}

One more example that /// to-promise-all converts a sequence of await expressions to await Promise.all():

/// to-promise-all
const foo = await bar().then
const { get } = await import('lodash-es')

Will be transformed to:

const [
  foo,
  { get },
] = await Promise.all([
  bar(),
  import('lodash-es'),
] as const)

Refer to the documentation for more details.

Sponsors

License

MIT License © 2024-PRESENT Anthony Fu