This is a simple tool for Deno projects that allows you to
associate specific deno tasks with
specific Git Hooks by extending the native
deno.json
configuration file or adding a separate one.
It works like this:
-
In your
deno.json
(ordeno.jsonc
) file, add agithooks
key containing a map of{githook}
to{deno task}
. For example:{ "tasks": { "start": "deno run -A dev.ts", "check": "deno fmt --check && deno lint" }, "githooks": { "pre-commit": "check" } }
You can also create a separate
githooks.json
,githooks.jsonc
,githooks.yaml
orgithooks.yml
file:{ "pre-commit": "check" }
pre-commit: check
To add autocompletion, you can use our JSON schema. This schema can either be specified in the settings of your code editor or directly in the JSON file:
{ "$schema": "https://deno.land/x/githooks/schema.json", "pre-commit": "check" }
-
In your terminal, run the
githooks.ts
script. It will automatically create a hook file for each githook in yourdeno.json
file.deno run -A -r https://deno.land/x/githooks/githooks.ts
That's it. Now your Git Hook should call deno task check
before every commit.
PROTIP: deco projects come with this
extension pre-installed in the dev
script. You don't have to do anything, just
add githooks
to deno.json
and run dev
to install the hooks transparently.