Contents

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.

EcosystemCommon tools
JavaScript / TypeScriptVite, webpack, esbuild, plus npm run build (bundlers)
Java / KotlinMaven, Gradle
C / C++Make, CMake
Go, Rustbuilt in: go build, cargo build
Pythonbuild, Poetry, pip with a pyproject.toml
.NETdotnet 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).