prek¶
prek ist eine in Rust geschriebene Variante von pre-commit zum Verwalten und Pflegen mehrsprachiger Commit-Hooks.
Eine wesentliche Aufgabe ist es, dem gesamten Entwicklungsteam dieselben Skripte zur Verfügung zu stellen. pre-commit von yelp verwaltet solche Hooks und verteilt sie auf verschiedene Projekte und Entwickler.
Git Hooks werden meist verwendet um vor Code Reviews automatisch auf Probleme im
Code hinzuweisen, z. B. um die Formatierung zu überprüfen
oder Debug-Anweisungen zu finden. pre-commit vereinfacht das
projektübergreifende Teilen vom Hooks. Dabei ist auch die Sprache, in der
z. B. ein Linter geschrieben wurde, wegabstrahiert –
so ist scss-lint in Ruby geschrieben, ihr könnt ihn jedoch mit pre-commit
verwenden ohne eurem Projekt ein Gemfile hinzufügen zu müssen.
Installation¶
Bevor ihr die Hooks ausführen könnt, muss prek installiert werden:
> powershell -ExecutionPolicy ByPass -c "irm https://github.com/j178/prek/releases/download/v0.4.9/prek-installer.ps1 | iex"
$ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.4.9/prek-installer.sh | sh
$ brew install prek
$ uv add --group dev prek
Überprüfen der Installation z.B. mit
$ uv run prek -V
prek 0.4.9 (42b79a57f 2026-07-11)
Konfiguration¶
Nachdem Pre-Commit installiert ist, können mit der
.pre-commit-config.yaml-Datei im Root-Verzeichnis eures Projekts Plugins für
dieses Projekt konfiguriert werden.
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
Ihr könnt euch eine solche initiale .pre-commit-config.yaml-Datei auch
generieren lassen mit
$ uv run prek sample-config > .pre-commit-config.yaml
Wenn ihr check-json auf eure Jupyter Notebooks anwenden möchtet, müsst ihr
zunächst konfigurieren, dass die Überprüfung auch für den Datei-Suffix
.ipynb verwendet werden soll:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # v6.0.0
hooks:
…
- id: check-json
types: [file]
files: \.(json|ipynb)$
Siehe auch
Eine vollständige Liste der Konfigurationsoptionen erhaltet ihr in Adding pre-commit plugins to your project.
Ihr könnt auch eigene Hooks schreiben, siehe Creating new hooks.
Installieren der Git-Hook-Skripte¶
Damit Pre-Commit auch vor jedem Commit zuverlässig ausgeführt wird, wird das Skript in unserem Projekt installiert:
$ prek install
prek installed at .git/hooks/pre-commit
Wollt ihr die Git-Hook-Skripte wieder deinstallieren, könnt ihr dies mit
prek uninstall.
Ausführen¶
uv run prek run --all-filesführt alle prek-Checks unabhängig von
git commitaus:$ uv run prek run --all-files Trim Trailing Whitespace.................................................Passed Fix End of Files.........................................................Passed Check Yaml...............................................................Passed Check for added large files..............................................Passed
uv run prek run HOOKführt einzelne prek-Checks aus, z. B.
prek run trailing-whitespace
Bemerkung
Beim ersten Aufruf eines prek-Checks wird dieser zunächst heruntergeladen und
anschließend installiert. Dies kann einige Zeit benötigen, z. B. wenn eine Kopie von node erstellt werden muss.
prek update [OPTIONS]aktualisiert die Hooks automatisch, z. B.:
$ uv run prek update --freeze --cooldown-days 7 https://github.com/pre-commit/pre-commit-hooks updating rev `v6.0.0` -> `3e8a8703264a2f4a69428a0aa4dcb512790b2c8c` (frozen: v6.0.0)
Die von prek verwalteten Hooks sind jedoch nicht darauf beschränkt, vor Commits ausgeführt zu werden; sie können auch für andere Git-Hooks verwendet werden, siehe Unterstützte Git-Hooks.