rollup-plugin-bundle-stats
Version:
In-depth bundle analyzer for rollup(bundle size, assets, modules, packages)
39 lines (37 loc) • 1.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.bundleStats = void 0;
const tslib_1 = require("tslib");
const path = tslib_1.__importStar(require("path"));
const fs = tslib_1.__importStar(require("fs/promises"));
// @ts-ignore
const transform_1 = require("rollup-plugin-webpack-stats/transform");
const cli_utils_1 = require("@bundle-stats/cli-utils");
const NAME = 'bundleStats';
function resolveAbsoluteOutputPath(outputPath) {
if (!outputPath) {
return process.cwd();
}
if (path.isAbsolute(outputPath)) {
return outputPath;
}
return path.join(process.cwd(), outputPath);
}
const bundleStats = (options = {}) => ({
name: NAME,
async generateBundle(outputOptions, bundle) {
const outputPath = resolveAbsoluteOutputPath(outputOptions.dir);
const log = this.info || console.info; // eslint-disable-line no-console
const source = (0, transform_1.bundleToWebpackStats)(bundle);
const reports = await (0, cli_utils_1.generateReports)(source, options, { outputPath });
await Promise.all(Object.entries(reports).map(async ([relativeFilepath, report]) => {
log(`Write bundle-stats ${report.type} to ${relativeFilepath}`);
const baseDirectory = path.dirname(report.filepath);
// Generate output parent directory in case is missing
await fs.mkdir(baseDirectory, { recursive: true });
return fs.writeFile(report.filepath, report.source);
}));
},
});
exports.bundleStats = bundleStats;
//# sourceMappingURL=index.js.map
;