mirror of
https://github.com/j178/prek.git
synced 2026-04-09 01:52:24 +02:00
40 lines
1.6 KiB
Markdown
40 lines
1.6 KiB
Markdown
# Difference from pre-commit
|
|
|
|
## General differences
|
|
|
|
- `prek` implements some common hooks from `pre-commit-hooks` in Rust for better performance.
|
|
- `prek` uses `~/.cache/prek` as the default cache directory for repos, environments and toolchains.
|
|
- `prek` decoupled hook environment from their repositories, allowing shared toolchains and environments across hooks.
|
|
- `prek` supports `language-version` as a semver specifier and automatically installs the required toolchains.
|
|
|
|
## Workspace mode
|
|
|
|
`prek` supports workspace mode, allowing you to run hooks for multiple projects in a single command. Each subproject can have its own `.pre-commit-config.yaml` file.
|
|
|
|
See [Workspace Mode](./workspace.md) for more information.
|
|
|
|
## Python support
|
|
|
|
- `prek` supports Python toolchain management, it will install the required Python versions automatically.
|
|
- `prek` uses `uv` for creating virtual environments and installing dependencies.
|
|
- `prek` supports Python hooks with PEP 723 inline metadata.
|
|
|
|
## `prek run`
|
|
|
|
- `prek` provides dynamic completions of hook id.
|
|
- `prek run --last-commit` to run hooks on files changed by the last commit.
|
|
- `prek run --directory <DIR>` to run hooks on a specified directory.
|
|
- `prek run [HOOK_ID] [HOOK_ID] ...` to run multiple hooks.
|
|
|
|
## `prek list`
|
|
|
|
`prek list` command lists all available hooks, their ids, and descriptions. This provides a better overview of the configured hooks.
|
|
|
|
## `prek sample-config`
|
|
|
|
- `prek sample-config` command has a `--file` option to write the sample configuration to a specific file.
|
|
|
|
## Future plans
|
|
|
|
- Global configurations.
|