Specifying which tags a project is allowed to depend on can sometimes lead to a long list of possible options:
{ "sourceTag": "scope:client", // we actually want to say it cannot depend on `scope:admin` "onlyDependOnLibsWithTags": [ "scope:shared", "scope:utils", "scope:core", "scope:client" ]}
The property notDependOnLibsWithTags
is used to invert this condition by explicitly specifying which tag(s) it cannot depend on:
{ "sourceTag": "scope:client", // we accept any tag except for `scope:admin` "notDependOnLibsWithTags": ["scope:admin"]}
In contrast to onlyDependOnLibsWithTags
, the notDependOnLibsWithTags
will also follow down the entire dependency tree to make sure there are no sub-dependencies that violate this rule. You can also use a combination of these two rules to restrict certain types of projects to be imported:
{ "sourceTag": "type:react", "onlyDependOnLibsWithTags": [ "type:react", "type:utils", "type:animation", "type:model" ], // make sure no `angular` code ends up being referenced by react projects "notDependOnLibsWithTags": ["type:angular"]}