Engineering Craft › Developer Tooling
Build Tool
Automating compile, test and package steps, like Make, Gradle or Vite.
Also known as: build system, Make, Gradle, Maven, Vite
A build tool automates the steps needed to turn source code into something you can run or ship: compile, bundle, test, package. Instead of typing a dozen commands in the right order, you run one, and the tool does the rest.
| Ecosystem | Common tools |
|---|---|
| JavaScript / TypeScript | Vite, webpack, esbuild, plus npm run build (bundlers) |
| Java / Kotlin | Maven, Gradle |
| C / C++ | Make, CMake |
| Go, Rust | built in: go build, cargo build |
| Python | build, Poetry, pip with a pyproject.toml |
| .NET | dotnet build, MSBuild |
npm run build # runs whatever the project defines
make test # runs the "test" target from a Makefile
./gradlew build
What they do
- Resolve and fetch dependencies (package managers).
- Compile or transpile source code.
- Run steps in the right order, and skip unchanged ones (incremental builds, caching).
- Package the result (a bundle, a JAR, a container image).
- Run tests and linters as part of the build.
- Produce the same output for everyone, on any machine, and in CI (continuous integration).
Habits
- Put the commands in the project, not in someone’s head: scripts, a Makefile, a README (npm scripts, task runners).
- Keep builds fast, with caching. Slow builds drain productivity.
- Make them reproducible: pinned versions and a lockfile.
- Keep build output out of Git (.gitignore).
- Read the error. Build failures usually say which step and file (reading error messages).