0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-02-15 01:57:09 -05:00
denoland-deno/cli/tools
Bartek Iwańczuk f08ca6414b
feat(lint): add JavaScript plugin support (#27203)
This commit adds an unstable lint plugin API.

Plugins are specified in the `deno.json` file under
`lint.plugins` option like so:

```
{
  "lint": {
    "plugins": [
      "./plugins/my-plugin.ts",
      "jsr:@deno/lint-plugin1",
      "npm:@deno/lint-plugin2"
    ]
  }
}
```

The API is considered unstable and might be subject
to changes in the future.

Plugin API was modelled after ESLint API for the 
most part, but there are no guarantees for compatibility.
The AST format exposed to plugins is closely modelled
after the AST that `typescript-eslint` uses.

Lint plugins use the visitor pattern and can add
diagnostics like so:

```
export default {
  name: "lint-plugin",
  rules: {
    "plugin-rule": {
      create(context) {
        return {
          Identifier(node) {
            if (node.name === "a") {
              context.report({
                node,
                message: "should be b",
                fix(fixer) {
                  return fixer.replaceText(node, "_b");
                },
              });
            }
          },
        };
      },
    },
  },
} satisfies Deno.lint.Plugin;
```

Besides reporting errors (diagnostics) plugins can provide
automatic fixes that use text replacement to apply changes.

---------

Co-authored-by: Marvin Hagemeister <marvin@deno.com>
Co-authored-by: David Sherret <dsherret@gmail.com>
2025-02-05 16:59:24 +01:00
..
bench feat(bench): add --permit-no-files (#27048) 2025-02-03 16:18:09 +00:00
coverage fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
doc refactor: update deno_doc, use prismjs, remove internal reference html generation logic (#26885) 2024-11-19 08:56:04 -08:00
init fix(init): correct dev task for --lib (#27860) 2025-01-29 16:53:13 +00:00
jupyter fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
lint feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
registry feat(outdated): interactive update (#27812) 2025-02-04 15:41:56 -08:00
repl fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
run refactor: create NpmInstaller (#27626) 2025-01-13 17:35:18 -05:00
test feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
check.rs fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
clean.rs refactor: add WorkspaceFactory and ResolverFactory (#27766) 2025-01-23 18:52:55 -05:00
compile.rs feat(compile): support sloppy imports (#27944) 2025-02-03 13:08:08 -05:00
doc.rs fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
fmt.rs refactor: add WorkspaceFactory and ResolverFactory (#27766) 2025-01-23 18:52:55 -05:00
info.rs feat(check/lsp): support "compilerOptions.rootDirs" (#27844) 2025-01-30 00:20:25 +00:00
installer.rs fix(install/global): warn about not including auto-discovered config file (#27745) 2025-01-27 14:18:27 -05:00
mod.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
serve.rs refactor: create deno_lib crate (#27673) 2025-01-15 09:35:46 -05:00
task.rs feat(task): add support for task wildcards (#27007) 2025-01-30 14:37:10 +01:00
upgrade.rs refactor: move denort to separate crate (#27688) 2025-01-17 20:39:29 +00:00