rerumaccusamus
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
30 lines (25 loc) • 915 B
text/typescript
import path from 'path';
import fs from 'fs-extra';
import type { EsmpackPlugin } from '../Options';
import type { Compiler } from '../Compiler';
import { rewriteExports } from '../utils/rewriteExports';
const pluginName = 'RewriteExportsPlugin';
class RewriteExportsPlugin implements EsmpackPlugin {
apply(compiler: Compiler) {
compiler.hooks.afterCompile.tapPromise(pluginName, async compilation => {
const output = compilation.rollupOutput?.output;
const destLoc = compiler.options.outDir;
if (!output) {
return;
}
for (const o of output) {
const emitFileName = o.fileName;
const emitFileLoc = path.resolve(destLoc, emitFileName);
let code: string = (await fs.readFile(emitFileLoc)).toString();
code = await rewriteExports(code);
await fs.writeFile(emitFileLoc, code);
}
});
}
}
export { RewriteExportsPlugin };