Welcome to Pants!
What is Pants?
Pants is a fast, scalable, user-friendly build and developer workflow system for codebases of all sizes, including yours!
What does Pants do?
Pants installs, orchestrates and runs dozens of standard underlying tools - compilers, code generators, dependency resolvers, test runners, linters, formatters, packagers, REPLs and more - composing them into a single stable, hermetic toolchain, and speeding up your workflows via caching and concurrency.
Pants is designed to be easy to adopt, use, and extend. It doesn't require you to refactor your codebase or to create and maintain massive amounts of build metadata. You invoke it directly on source files and directories, so it doesn't require users to adopt a new conceptual model.
Pants is currently focused on Python, Go, Java, Scala, Shell, and Docker, with more languages and frameworks coming soon. The Pants community is friendly and helpful and welcomes involvement of anyone who is interested in creating modern software development tooling.
Who is Pants for?
Pants is useful for repos of all sizes, but is particularly valuable for those containing multiple distinct but interdependent pieces.
Pants works well with (but does not require) a monorepo architecture: a codebase containing multiple projects—often using multiple programming languages and frameworks—in a single unified repository. If you want to scale your codebase without breaking it up into multiple disconnected repos, with all the versioning and maintenance headaches that causes, Pants provides the tooling for you to do so effectively.
What are the main features of Pants?
Pants is designed for fast, consistent, ergonomic builds. Some noteworthy features include:
- Dependency modeling using static analysis instead of handwritten metadata
- Fine-grained invalidation
- Shared result caching
- Concurrent and remote execution
- Support for dependency lockfiles to prevent supply chain attacks
- A unified interface across all tools and languages
- Extensibility and customizability via a plugin API
- Code introspection features
Which languages and frameworks does Pants support?
- Pants ships with support for Python, Go, Java, Scala, Kotlin, and Shell.
- Pants supports a wide range of code generators (such as Thrift, Protobuf, Scrooge and Avro), linters and formatters, and it is easy to add support for new or custom ones
- Pants can create standalone binaries, Docker images, AWS Lambdas and GCP Cloud Functions
We're listening to the community for which languages, frameworks and tools we should support next, so let us know about your needs by opening an issue on GitHub or chatting with us about it on the community Slack! Pants was designed for extensibility, and we welcome contributions!