I stopped worrying and loved Makefiles

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

CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
coderabbit.ai
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. just

    🤖 Just a command runner

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

  2. CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  3. .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.

  4. 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

  5. makesure

    Simple task/command runner with declarative goals and dependencies

  6. 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

  7. 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

  • Show HN: Bin CLI – A simple task/script runner for any programming language

    3 projects | news.ycombinator.com | 31 May 2024
  • 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

Did you know that Shell is
the 11th most popular programming language
based on number of references?