Unchecked Modules
A module can be marked ‘unchecked’ by setting unchecked: true
in its configuration within tach.toml
.
How does it work?
An unchecked module should be thought of as a ‘known’ module which does not have any restriction on its dependencies.
The purpose of configuring an unchecked module is to better support incremental adoption of Tach.
Example
Suppose you are adding Tach to an existing project, and you want to start by restricting dependencies for only one part of the codebase.
Given the example project above, one might mark utils
, filesystem
, parsing
, and core.module(1,2,3)
as modules.
After doing this, tach sync
would detect and add all the dependencies found between these modules, and tach check
would enforce them.
However, suppose that parsing
, core.module2
, and core.module3
are changing rapidly, and errors from tach check
due to changing dependencies are unnecessary.
By default, Tach would require the configuration to be ‘all-or-nothing’ - these errors would be unavoidable if these modules are themselves dependencies of more stable modules.
Using unchecked: true
in the configuration above allows restricting dependencies for core.module1
at a fine-grained level without needing to restrict dependencies for all other modules.