Building Block relationships
Several types of relationships can be declared when defining Building Blocks.
Generic dependency (dependsOn)
This relationship implies that a building block depends on another, in a generic manner.
This is the default type of relationship that exists, for example, when the schema of a building block is referenced from another.
This type of dependency uses the dependsOn property in the building blocks register and metadata files.
Profiling (profileOf)
Profiling signals that a building block does not merely reference or reuse another, but that it extends it, that is, it inherits its main structure and provides additional metadata properties, constraints, examples, etc.
This type of dependency is declared using profileOf in bblock.json.
Extension points
When defining extension points, three new types of relationships are involved.
Extends
This relationship links a building block with the another that is used as an extension base, and for
which extension points are defined. It is a special case of the profileOf property.
Extension target
This relationship links a building block to another that is used to augment or constraint references to an extension source.
Extension source
This type of relationship binds an extension target with the original building block referenced by the extension base.