build-scripts
Version:
scripts core
57 lines (56 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const chalk_1 = require("chalk");
const formatWebpackMessages = require("react-dev-utils/formatWebpackMessages");
const log = require("./log");
const defaultOptions = {
// errors and warings will be logout by formatWebpackMessages
errors: false,
warnings: false,
colors: true,
assets: true,
chunks: false,
entrypoints: false,
modules: false,
};
const webpackStats = ({ urls, stats, statsOptions = defaultOptions, isFirstCompile }) => {
const statsJson = stats.toJson({
all: false,
errors: true,
warnings: true,
timings: true,
});
// compatible with webpack 5
['errors', 'warnings'].forEach((jsonKey) => {
statsJson[jsonKey] = (statsJson[jsonKey] || []).map((item) => (item.message || item));
});
const messages = formatWebpackMessages(statsJson);
const isSuccessful = !messages.errors.length;
if (!process.env.DISABLE_STATS) {
log.info('WEBPACK', stats.toString(statsOptions));
if (isSuccessful) {
// @ts-ignore
if (stats.stats) {
log.info('WEBPACK', 'Compiled successfully');
}
else {
log.info('WEBPACK', `Compiled successfully in ${(statsJson.time / 1000).toFixed(1)}s!`);
}
if (isFirstCompile && urls) {
console.log();
log.info('WEBPACK', chalk_1.default.green('Starting the development server at:'));
log.info(' - Local : ', chalk_1.default.underline.white(urls.localUrlForBrowser));
log.info(' - Network: ', chalk_1.default.underline.white(urls.lanUrlForTerminal));
console.log();
}
}
else if (messages.errors.length) {
log.error('', messages.errors.join('\n\n'));
}
else if (messages.warnings.length) {
log.warn('', messages.warnings.join('\n\n'));
}
}
return isSuccessful;
};
exports.default = webpackStats;