Skip to content

ContainerValidation

Mauro Gadaleta edited this page Jun 17, 2026 · 2 revisions

Container Validation

The container can validate service wiring before runtime to detect dependency graph issues early.

Programmatic usage

const result = await container.compile({
  validate: true,
  throwOnError: false
})

console.log(result.isValid)
console.log(result.errors)
console.log(result.warnings)
console.log(result.info)

By default, when validate: true and throwOnError is not false, compile throws ContainerValidationError if validation errors exist.

await container.compile({ validate: true })

Validation checks

Errors

  • Missing dependency
  • Circular dependency
  • Unresolved parameters (%param%)

Warnings

  • Unused nullable references (@?service) when target always exists
  • Deprecated service used by non-deprecated services

Info

  • Tagged services without any tag consumer
  • Keyed tag groups with multiple services and no default: true

CLI usage

ndi container:validate [options] <path>

Options:

  • --format <format>: text or json
  • --strict: exit with code 1 when warnings are present

Examples:

ndi container:validate ./config/services.yaml
ndi container:validate --format=json ./config/services.yaml
ndi container:validate --strict ./config/services.yaml

Notes

  • Without validate: true, compile behaves as before.
  • With throwOnError: false, compile returns the full validation report instead of throwing.

Clone this wiki locally