Documentation

Configuration Files

Configuration Files

Load and organize container definitions from YAML, JSON, JS, or XML 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')
Loading an XML config file:
import {ContainerBuilder, XmlFileLoader} from 'node-dependency-injection'

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

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'] }]
        }
    }
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<container>
    <services>
        <service id="mailer" class="./Mailer">
            <argument>sendmail</argument>
        </service>
        <service id="newsletter_manager" class="./NewsletterManager">
            <argument>%fs-extra</argument>
            <call method="setMailer">
                <argument>@mailer</argument>
            </call>
        </service>
    </services>
</container>