code: function step() {
            const f = files.pop();
            if (f) {
              console.error('Ractive: compiling component ' + path.join(opts.directory, f));
              util
                .readToString(fs.createReadStream(path.join(opts.directory, f)))
                .then(string => {
                  return component
                    .build(string, opts, mkReadFile(path.join(opts.directory, f)))
                    .then(string => {
                      const file = path.join(
                        opts.output,
                        f.replace(ext, opts.outputExtension || '.js')
                      );
                      util.mkdirp(path.dirname(file));
                      util.writeToStream(fs.createWriteStream(file), string);
                    });
                })
                .then(step, err => {
                  console.error(err && typeof err === 'object' ? err.stack : err);
                  process.exit(1);
                });
            }
          }
docs: /* eslint-disable-next-line no-inner-declarations