``mazel``: make helpers for monorepos ===================================== > bazel(-ish) for Makefiles = **mazel** ``mazel`` is a simple `bazel `_ -inspired `Make `_-based build system for monorepos. The goal is to not create another build system, rather we provide simple helpers around GNU `make`, along with common (though not required) Makefile patterns and the ability to process language-specific dependency files (:file:`pyproject.toml`, :file:`package.json`) mazel provides: 1. Ability to execute make targets in one more :ref:`Packages ` via a :ref:`Label syntax ` 2. Dependency graph to allow execution of targets in a logical order. Either explicitly specificied or automatically parsed from :doc:`Supported Runtime ` including poetry and npm. 3. Ability to only run for a subset of modified packages according the the dependency graph. :ref:`Selective Builds ` Run the ``clean`` target in all packages in a monorepo (``//`` indicates :ref:`Workspace ` root):: mazel run //:clean `mazel run` typically requires the `:target` specifier. However some commands automatically default to a target (e.g. `:test` for `mazel test`):: # Test one package mazel test //libs/common # Or test multiple packages mazel test // With :ref:`Selective Builds `, only modified packages (and optionally downstream packages) can be run:: mazel test --modified-since=abcd1234 --with-descendants // .. toctree:: :maxdepth: 2 :caption: Contents: why concepts commands build-toml runtimes make/index contribute changelog