Build systems

Jun 14, 2020 • ☕️ 2 min read

Build systems are critical to creating a repeatable, reproducible and consistent build process. This becomes important as the company grows in size and more developers are added to the team and as more products are added to the product line.

Basically you’ll use these systems to orchestrate a combination of following tasks:

  • fetch dependencies
  • transpile source codes
  • build executable programs
  • run multiple types of tests
  • bundle websites or apps
  • perform static analysis
  • generate documentation

Before choosing a system, consider following:

  • How easy is for the people to describe the build process?
  • Does it generate all the dependencies correctly?
  • How long does it take for the build to complete?
  • Will the tool scale well and can it include other build tools?

Bazel

Bazel is a build tool that builds code quickly and reliably. It is used to build the majority of Google’s software, and thus it has been designed to handle build problems present in Google’s development environment.

Buck

Buck encourages the creation of small, reusable modules consisting of code and resources, and supports a variety of languages on many platforms.

Pants

Pants is a fast, scalable build system. Pants supports Java, Scala, Python, C/C++, Go, Javascript/Node, Thrift, Protobuf and Android code. Adding support for other languages, frameworks and code generators is straightforward.

Gradle

Write in Java, C++, Python or your language of choice. Package for deployment on any platform. Go monorepo or multi-repo. And rely on Gradle’s unparalleled versatility to build it all.

Apache Maven

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.

CMake

CMake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.

Related Posts

Reset CSS

A small CSS file reset.css to reset all browsers’ default styles that come with the browser’s user agent

Cracking the Frontend Interview, Part 3: CSS

An overview look at core CSS topics that help you ace the frontend interview

React-Admin - the best React framework to build dashboard

The best React framework to build admin dashboard which adapts to any backend

Cracking the Frontend Interview, Part 1: Overview

What to focus technically when preparing for the frontend developer interview