Besides the primary entry point, a package can contain one or more secondary entry points (e.g. @angular/core/testing, @angular/cdk/a11y, …).
These contain symbols that we don't want to group together with the symbols in the main entry point.
The module id of a secondary entry directs the module loader to a sub-directory by the secondary's name.
For library developers, secondary entry points are configured by adding a ng-package.json file in subdirectories of the main package.json file's folder!
my_package
├── src
| ├── public_api.ts
| └── *.ts
├── ng-package.json
├── package.json
└── testing
├── src
| ├── public_api.ts
| └── *.ts
└── ng-package.json
The contents of my_package/testing/ng-package.json can be as simple as:
{}No, that is not a typo. No name is required. No version is required.
It's all handled for you by ng-packagr!
When built, the primary entry point is imported by import {..} from '@my/library' and the secondary entry point with import {..} from '@my/library/testing'.