webpack/test/helpers/LogTestPlugin.js

50 lines
1.2 KiB
JavaScript

"use strict";
/** @typedef {import("../../").Compiler} Compiler */
/** @typedef {import("../../").Compilation} Compilation */
module.exports = class LogTestPlugin {
/**
* @param {boolean=} noTraced noTraced
*/
constructor(noTraced) {
this.noTraced = noTraced;
}
/**
* @param {Compiler} compiler compiler
*/
apply(compiler) {
/**
* @param {ReturnType<Compilation["getLogger"]>} logger logger
*/
const logSome = (logger) => {
logger.group("Group");
if (!this.noTraced) {
logger.error("Error");
logger.warn("Warning");
}
logger.info("Info");
logger.log("Log");
logger.debug("Debug");
logger.groupCollapsed("Collapsed group");
logger.log("Log inside collapsed group");
logger.group("Inner group");
logger.log("Inner inner message");
logger.groupEnd();
logger.groupEnd();
logger.log("Log");
logger.groupEnd();
logger.log("End");
};
logSome(compiler.getInfrastructureLogger("LogTestPlugin"));
compiler.hooks.compilation.tap("LogTestPlugin", (compilation) => {
const logger = compilation.getLogger("LogTestPlugin");
logSome(logger);
const otherLogger = compilation.getLogger("LogOtherTestPlugin");
otherLogger.debug("debug message only");
});
}
};