constructor(config = {}) {
    // Logging
    this.log = this._setupLogger(config);

    this.log.debug('Started logging');
    this.dest = path.resolve(config.dest || '.');

    this.log.debug('Prepared general options');
    this.shape = 'shape' in config ? { ...config.shape } : {};

    // Parse meta data (if configured)
    this.shape.meta = this._getMetaData();

    // Parse alignment data (if configured)
    this.shape.align = this._getAlignmentData();

    // Register a sorting callback for shape names
    if (!('sort' in this.shape) || !isFunction(this.shape.sort)) {
      this.shape.sort = (shape1, shape2) => shape1.id === shape2.id ? 0 : (shape1.id > shape2.id ? 1 : -1);
    }

    this._prepareShape();
    this.log.debug('Prepared `shape` options');

    this.svg = this._prepareSVG(config);
    this.log.debug('Prepared `svg` options');

    this.mode = this.filter(config.mode);
    this.log.debug('Prepared `mode` options');

    this.variables = { ...config.variables };
    this.log.debug('Prepared `variables` options');
    this.log.verbose('Initialized spriter configuration');
  }
SVGSpriter configuration

@param {object} config                 Configuration