1
0
mirror of https://github.com/j178/prek.git synced 2026-04-09 01:52:24 +02:00
Files
prek/docs/diff.md
2025-09-06 20:19:36 +08:00

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.