Changelog - 2026-10-17
ignis-artifacts finds decorators another package re-exports
EnhancementIn one line. ignis-artifacts generate --source-module <package> indexes classes decorated with stereotypes that <package> re-exports from the kernel.
What changed
--source-module <specifier>. The scanner used to count@service,@repositoryand the other stereotypes only when they were imported from@venizia/ignisor@venizia/ignis-kernel. Each--source-moduleadds one more module, matched exactly. Repeat the flag for several.- The header records it. The generated file's first line names every
--source-module, so the regenerate command stays complete. - The stale hint prints the whole command.
checkused to suggest--rootand--outonly. It now prints the fullgeneratecommand, with--ignore,--exportand--source-moduleincluded. - Programmatic API.
IGenerateOptionsand the scanner's options takesourceModules?: string[].ArtifactIndexEmitter.renderCommand()returns the command the header and the hint print.
Who is affected
- Backend applications on
@venizia/ignis. No action needed. Without the flag, the scan, the header and the index are unchanged. - Applications whose decorators come from another package. Pass that package with
--source-module, to bothgenerateandcheck, and drop any hand-written side-effect imports.
Details
A frontend framework built on the kernel re-exports its stereotype decorators, so its classes import service from the framework, not from @venizia/ignis-kernel. Before this flag the scanner found none of them:
json
{
"scripts": {
"generate:artifacts": "ignis-artifacts generate --root src --out src/_artifacts.ts --source-module @acme/frontend --source-module @acme/frontend-kernel",
"check:artifacts": "ignis-artifacts check --root src --out src/_artifacts.ts --source-module @acme/frontend --source-module @acme/frontend-kernel"
}
}- A specifier is matched whole:
--source-module @acme/frontenddoes not match@acme/frontend-kernel. checkcompares the index body only, so it needs the same--source-moduleset asgenerate. A set that differs finds different classes and reports the file stale.- IGNIS names no consumer package. The default stays
@venizia/ignisand@venizia/ignis-kernel.
Files: packages/boot/src/clis/artifacts.ts, packages/boot/src/generator/scanner.ts, packages/boot/src/generator/emitter.ts