code: function createScssPreprocessor(args, config = {}, logger) {
    const log = logger.create('preprocessor.scss');
  
    // Options. See https://www.npmjs.com/package/node-sass for details
    const options = merge({
      sourceMap: false,
      transformPath(filepath) {
        return filepath.replace(/\.scss$/, '.css');
      },
    }, args.options || {}, config.options || {});
  
    return function processFile(content, file, done) {
      let result = null;
  
      log.debug('Processing "%s".', file.originalPath);
  
      // Transform file.path to .css so Karma serves it as a stylesheet
      file.path = file.originalPath.replace(/\.scss$/, '.css'); // eslint-disable-line
  
      // Clone the options because we need to mutate them
      const opts = clone(options);
  
      // Add current file's directory into include paths
      opts.includePaths = [path.dirname(file.originalPath)].concat(opts.includePaths || []);
  
      // Inline source maps
      if (opts.sourceMap) {
        opts.sourceMap = file.path;
        opts.omitSourceMapUrl = true;
      }
  
      // Compile using node-sass (synchronously)
      try {
        opts.file = file.originalPath;
        result = sass.renderSync(opts);
      } catch (error) {
        const message = formattedScssMessage(error, file);
        log.error('%s\n  at %s:%d', message, file.originalPath, error.line);
        error.message = stripAnsi(message);
        return done(error, null);
      }
  
      done(null, result.css || result);
      return undefined;
    };
  }
docs: Preprocessor factory
  @param args   {Object} Config object of custom preprocessor.
  @param config {Object} Config object of scssPreprocessor.
  @param logger {Object} Karma's logger.