async function write()

in packages/plugin-babel/src/index.ts [62:118]


      async function write(src: string, base: string) {
        let relative = path.relative(base, src);
        if (!util.isCompilableExtension(relative, cliOptions.extensions)) {
          return false;
        }

        // remove extension and then append back on .js
        relative = util.adjustRelative(relative, cliOptions.keepFileExtension);

        const dest = getDest(relative, base);
        try {
          const res = await util.compile(
            src,
            defaults(
              {
                sourceFileName: slash(path.relative(dest + "/..", src))
              },
              {
                ...config.babelOptions,
                ...babelOptions
              }
            )
          );

          if (!res) {
            return false;
          }

          // we've requested explicit sourcemaps to be written to disk
          if (
            res.map &&
            babelOptions.sourceMaps &&
            babelOptions.sourceMaps !== "inline"
          ) {
            const mapLoc = dest + ".map";
            res.code = util.addSourceMappingUrl(res.code, mapLoc);
            res.map.file = path.basename(relative);
            outputFileSync(mapLoc, JSON.stringify(res.map));
          }

          outputFileSync(dest, res.code);
          util.chmod(src, dest);

          if (cliOptions.verbose) {
            console.log(src + " -> " + dest);
          }

          return true;
        } catch (err) {
          if (cliOptions.watch) {
            console.error(err);
            return false;
          }

          throw err;
        }
      }