1
0
mirror of https://github.com/j178/prek.git synced 2026-04-25 02:11:36 +02:00
2025-08-03 13:40:32 +08:00
2024-12-08 14:41:45 +08:00
2024-11-18 15:22:22 +08:00
2024-11-20 22:07:31 +08:00
2025-08-04 21:14:19 +08:00
2025-02-13 20:28:07 +08:00
2025-08-04 21:26:41 +08:00
2025-08-04 21:26:41 +08:00
2025-08-04 21:26:41 +08:00
2025-02-13 20:28:07 +08:00
2025-08-04 13:09:37 +08:00
2025-07-30 14:27:51 +08:00
2025-08-04 21:26:41 +08:00
2025-08-04 21:26:41 +08:00
2025-02-18 17:58:15 +08:00

prefligit

Development Status CI GitHub downloads

prefligit

pre-commit is a framework to run hooks written in many languages, and it manages the language toolchain and dependencies for running the hooks.

prefligit is a reimagined version of pre-commit, built in Rust. It is designed to be a faster, dependency-free and drop-in alternative for it, while also providing some additional long-requested features.

Warning

This project is still in early stage of development, only a few of the original pre-commit features are implemented. It is not production-ready yet, but feel free to try it out and provide feedback.

Current supported languages are python, node, docker, docker-image, system, script and fail.

Note

This project was previously named pre-commit-rs, but it was renamed to prefligit to prevent confusion with the existing pre-commit tool. See #73 for more information.

Features

  • 🚀 A single binary with no dependencies, does not require Python or any other runtime.
  • About 10x faster and uses roughly 2/3 less disk space than pre-commit.
  • 🔄 Fully compatible with the original pre-commit configurations and hooks.
  • 🐍 Integration with uv for managing Python virtual environments and dependencies.
  • 🛠️ Improved toolchain installations for Python, Node.js, Go, Rust and Ruby, shared between hooks.
  • 📦 Built-in implementation of some common hooks.
  • 🏗️ (TODO) Built-in support for monorepos.

Usage

$ prefligit run
trim trailing whitespace.................................................Passed
fix end of files.........................................................Passed
typos....................................................................Passed
cargo fmt................................................................Passed
cargo clippy.............................................................Passed

prefligit is designed to be a drop-in alternative for the original pre-commit tool, so you can use it with your existing configurations and hooks.

Please refer to the official documentation for more information on how to configure and use pre-commit.

Installation

Standalone installer

prefligit provides a standalone installer script to download and install the tool:

# On Linux and macOS
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prefligit/releases/download/v0.0.18/prefligit-installer.sh | sh

# On Windows
powershell -ExecutionPolicy ByPass -c "irm https://github.com/j178/prefligit/releases/download/v0.0.18/prefligit-installer.ps1 | iex"
PyPI

prefligit is published as Python binary wheel to PyPI, you can install it using pip, uv (recommended), or pipx:

pip install prefligit

# or

uv tool install prefligit

# or

pipx install prefligit
Homebrew
brew install prefligit
Cargo

Build from source using Cargo:

cargo install --locked --git https://github.com/j178/prefligit
GitHub Releases

prefligit release artifacts can be downloaded directly from the GitHub releases.

If installed via the standalone installer, prefligit can update itself to the latest version:

$ prefligit self update

Acknowledgements

This project is heavily inspired by the original pre-commit tool, and it wouldn't be possible without the hard work of the maintainers and contributors of that project.

And a special thanks to the Astral team for their remarkable projects, particularly uv, from which I've learned a lot on how to write efficient and idiomatic Rust code.

S
Description
No description provided
Readme MIT 18 MiB
Languages
Rust 97.5%
Python 1.6%
Shell 0.5%
JavaScript 0.3%