I stopped worrying and loved Makefiles

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • just

    🤖 Just a command runner

  • I don't like makefiles, but I've been enjoying justfiles: https://github.com/casey/just

  • .files

    No place like ~ (by matheusmoreira)

  • I (ab)use make to manage my dotfiles.

    https://github.com/matheusmoreira/.files/blob/master/GNUmake...

    I'm surprised at how well this thing works every time I use it. I even blogged about it.

    https://www.matheusmoreira.com/articles/managing-dotfiles-wi...

    Recently made a tool that processes the make database and prints the phony targets and their dependencies:

    https://github.com/matheusmoreira/.files/blob/master/~/.loca...

    I use it as a sort of makefile help command. Works surprisingly well too.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • just-flake

    Use `just` in your Nix devShells with re-usable and share-able targets.

  • I've been using this on almost all of my projects, and am really pleased with it. Shell autocompletion is a nice bonus. If you also Nix, checkout `just-flake`:

    https://github.com/juspay/just-flake

  • makesure

    Simple task/command runner with declarative goals and dependencies

  • macos-cross-compiler

    Compile binaries for macOS on Linux

  • Make is excellent if you use it properly to model your dependencies. This works really well for languages like C/C++, but I think Make really struggles with languages like Go, JavaScript, and Python or when your using a large combination of technologies.

    I've found Earthly [0] to be the _perfect_ tool to replace Make. It's a familiar syntax (combination of Dockerfiles + Makefiles). Every target is run in an isolated Docker container, and each target can copy files from other targets. This allows Earthly to perform caching and parallelization for free, and in addition you get lots of safety with containerization. I've been using Earthly for a couple of years now and I love it.

    Some things I've built with it:

    * At work [1], we use it to build Docker images for E2E testing. This includes building a Go project, our mkdocs documentation, our Vue UI, and a ton of little scripts all over the place for generating documentation, release notes, dependency information (like the licenses of our deps), etc.

    * I used it to create my macOS cross compiler project [2].

    * A project for playing a collaborative game of Pokemon on Discord [3]

    IMO Makefiles are great if you have a few small targets. If you're looking at more than >50 lines, if your project uses many languages, or you need to run targets in a Docker container, then Earthly is a great choice.

    [0]: https://earthly.dev/

    [1]: https://p3m.dev/

    [2]: https://github.com/shepherdjerred/macos-cross-compiler

    [3]: https://github.com/shepherdjerred/discord-plays-pokemon

  • discord-plays-pokemon

    Twitch Plays Pokémon, but for Discord (by shepherdjerred)

  • Make is excellent if you use it properly to model your dependencies. This works really well for languages like C/C++, but I think Make really struggles with languages like Go, JavaScript, and Python or when your using a large combination of technologies.

    I've found Earthly [0] to be the _perfect_ tool to replace Make. It's a familiar syntax (combination of Dockerfiles + Makefiles). Every target is run in an isolated Docker container, and each target can copy files from other targets. This allows Earthly to perform caching and parallelization for free, and in addition you get lots of safety with containerization. I've been using Earthly for a couple of years now and I love it.

    Some things I've built with it:

    * At work [1], we use it to build Docker images for E2E testing. This includes building a Go project, our mkdocs documentation, our Vue UI, and a ton of little scripts all over the place for generating documentation, release notes, dependency information (like the licenses of our deps), etc.

    * I used it to create my macOS cross compiler project [2].

    * A project for playing a collaborative game of Pokemon on Discord [3]

    IMO Makefiles are great if you have a few small targets. If you're looking at more than >50 lines, if your project uses many languages, or you need to run targets in a Docker container, then Earthly is a great choice.

    [0]: https://earthly.dev/

    [1]: https://p3m.dev/

    [2]: https://github.com/shepherdjerred/macos-cross-compiler

    [3]: https://github.com/shepherdjerred/discord-plays-pokemon

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Using Make – writing less Makefile

    6 projects | news.ycombinator.com | 26 Dec 2023
  • Any recommendations for CLI wrappers?

    2 projects | /r/devops | 27 Apr 2023
  • New blog post about makefiles being used in modern development. Link is listed below in case you wanted to check it out.

    2 projects | /r/devops | 14 Mar 2022
  • Does anyone feel that there’s so many CI/CD tools that it’s impossible to keep up with?

    2 projects | /r/devops | 4 Jan 2021
  • MXE (M Cross Environment)

    1 project | news.ycombinator.com | 12 Apr 2024