Skip to content

ConfigurationFiles

Mauro edited this page May 27, 2022 · 7 revisions

Setting up the Container with Configuration Files

Loading a YAML config file:
import {ContainerBuilder, YamlFileLoader} from 'node-dependency-injection'

let container = new ContainerBuilder()
let loader = new YamlFileLoader(container)
await loader.load('/path/to/file.yml')
Loading a JSON config file:
import {ContainerBuilder, JsonFileLoader} from 'node-dependency-injection'

let container = new ContainerBuilder()
let loader = new JsonFileLoader(container)
await loader.load('/path/to/file.json')
Loading a JS config file:
import {ContainerBuilder, JsFileLoader} from 'node-dependency-injection'

let container = new ContainerBuilder()
let loader = new JsFileLoader(container)
await loader.load('/path/to/file.js')

You can now set up the newsletter_manager and mailer services using config files:

YAML
services:
    mailer:
        class:     ./Mailer
        arguments: ['sendmail']
    newsletter_manager:
        class:     ./NewsletterManager
        arguments: ['%fs-extra']
        calls:
            - { method: 'setMailer', arguments: ['@mailer'] }
JSON
{
  "services": {
    "mailer": {
      "class": "./Mailer",
      "arguments": ["sendmail"]
    },
    "newsletter_manager": {
      "class": "./NewsletterManager",
      "arguments": ["%fs-extra"],
      "calls": [
        {
          "method": "setMailer",
          "arguments": ["@mailer"]
        }
      ]
    }
  }
}
JS
module.exports = {
    services: {
        mailer: {class: "./Mailer", arguments: ["sendmail"]},
        newsletter_manager: {
          class: "./NewsletterManager", 
          arguments: ["%fs-extra"],
          calls: [{ method: 'setMailer', arguments: ['@mailer'] }]
        }
    }
}