code: function renderTemplateFiles (skipInterpolation) {
    skipInterpolation = typeof skipInterpolation === 'string'
      ? [skipInterpolation]
      : skipInterpolation;
    return (files, metalsmith, done) => {
      const keys = Object.keys(files);
      const metalsmithMetadata = metalsmith.metadata();
      async.each(keys, (file, next) => {
        // skipping files with skipInterpolation option
        if (skipInterpolation && multimatch([file], skipInterpolation, { dot: true }).length) {
          return next();
        }
        const rawFileName = file;
        const rawBuffer = files[file];
        const contents = rawBuffer.contents.toString();
        // do not attempt to render files that do not have mustaches
        if (!/{{([^{}]+)}}/g.test(contents) && !/{{([^{}]+)}}/g.test(file)) {
          return next();
        }
  
        // first replace filename
        render(file, metalsmithMetadata, (err, res) => {
          if (err) {
            err.message = `[${file}] ${err.message}`;
            return next(err);
          }
          file = res;
          // second replace file contents
          render(contents, metalsmithMetadata, (err, res) => {
            if (err) {
              err.message = `[${file}] ${err.message}`;
              return next(err);
            }
            files[file] = rawBuffer;
            files[file].contents = new Buffer(res);
  
            // delete old buffer
            if (rawFileName !== file) {
              files[rawFileName] = null;
              delete files[rawFileName];
            }
            next();
          });
        });
      }, done);
    };
  }
docs: Template in place plugin.
  
  @param {Object} files
  @param {Metalsmith} metalsmith
  @param {Function} done