0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-02-14 17:47:35 -05:00
denoland-deno/cli
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
..
args feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
bench feat(ext/node): implement node:sqlite (#27308) 2025-01-28 19:30:03 +05:30
cache refactor: add WorkspaceFactory and ResolverFactory (#27766) 2025-01-23 18:52:55 -05:00
js feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
lib feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
lsp feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
npm feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
ops feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
rt perf: node resolution cache (#27838) 2025-02-03 20:25:10 -05:00
schemas feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
snapshot feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
standalone feat(check/lsp): support "compilerOptions.rootDirs" (#27844) 2025-01-30 00:20:25 +00:00
tools feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
tsc feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
util feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
build.rs feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
Cargo.toml feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
cdp.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
clippy.toml refactor: do not use deno_fs::FileSystem everywhere (#27508) 2024-12-31 11:29:07 -05:00
deno.ico
emit.rs fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
entitlements.plist chore: start codesigning mac release builds (#21303) 2023-11-23 15:30:26 -07:00
factory.rs perf: node resolution cache (#27838) 2025-02-03 20:25:10 -05:00
file_fetcher.rs fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
graph_container.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
graph_util.rs fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
http_util.rs refactor: move denort to separate crate (#27688) 2025-01-17 20:39:29 +00:00
integration_tests_runner.rs refactor: move denort to separate crate (#27688) 2025-01-17 20:39:29 +00:00
js.rs refactor: move denort to separate crate (#27688) 2025-01-17 20:39:29 +00:00
jsr.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
main.rs refactor: add WorkspaceFactory and ResolverFactory (#27766) 2025-01-23 18:52:55 -05:00
module_loader.rs fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
node.rs refactor: add WorkspaceFactory and ResolverFactory (#27766) 2025-01-23 18:52:55 -05:00
README.md docs(cli): do not need gen doc for cli (#17260) 2023-01-04 13:19:58 +01:00
resolver.rs refactor: add WorkspaceFactory and ResolverFactory (#27766) 2025-01-23 18:52:55 -05:00
task_runner.rs refactor: add 'deno_os' crate (#27655) 2025-01-14 17:29:36 +01:00
worker.rs refactor: move denort to separate crate (#27688) 2025-01-17 20:39:29 +00:00

Deno CLI Crate

crates

This provides the actual deno executable and the user-facing APIs.

The deno crate uses the deno_core to provide the executable.