記錄輸出是向最終使用者顯示訊息的另一種方式。
Webpack 記錄器可供 載入器 和 外掛程式 使用。發出作為 統計資料 的一部分,並由使用者在 Webpack 設定 中設定。
Webpack 中自訂記錄 API 的好處
stats.json
的一部分匯出透過導入 Webpack 記錄 API,我們希望統一 Webpack 外掛程式和載入器發出記錄的方式,並允許更好的方式來檢查建置問題。整合的記錄解決方案透過改善開發人員的開發體驗來支援外掛程式和載入器開發人員。為非 CLI Webpack 解決方案(例如儀表板或其他 UI)鋪路。
my-webpack-plugin.js
const PLUGIN_NAME = 'my-webpack-plugin';
export class MyWebpackPlugin {
apply(compiler) {
// you can access Logger from compiler
const logger = compiler.getInfrastructureLogger(PLUGIN_NAME);
logger.log('log from compiler');
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
// you can also access Logger from compilation
const logger = compilation.getLogger(PLUGIN_NAME);
logger.info('log from compilation');
});
}
}
my-webpack-loader.js
module.exports = function (source) {
// you can get Logger with `this.getLogger` in your webpack loaders
const logger = this.getLogger('my-webpack-loader');
logger.info('hello Logger');
return source;
};
從上述 my-webpack-plugin.js
範例中可以看到,有兩種記錄方法:
compilation.getLogger
compiler.getInfrastructureLogger
建議在外掛程式/記錄與編譯相關時使用 compilation.getLogger
,它們會儲存在統計資料中。對於發生在編譯週期之外的記錄,請改用 compiler.getInfrastructureLogger
。
logger.error(...)
:用於錯誤訊息logger.warn(...)
:用於警告logger.info(...)
:用於重要資訊訊息。這些訊息會預設顯示。僅將其用於使用者真正需要看到的訊息logger.log(...)
:用於不重要資訊訊息。這些訊息僅在使用者選擇查看時才會顯示logger.debug(...)
:用於除錯資訊。這些訊息僅在使用者選擇查看特定模組的除錯記錄時才會顯示logger.trace()
:用於顯示堆疊追蹤。顯示方式類似於 logger.debug
logger.group(...)
:用於將訊息分組。顯示方式類似於 logger.log
,會摺疊起來logger.groupEnd()
:結束記錄群組logger.groupCollapsed(...)
:將訊息分組在一起。顯示時會像 logger.log
一樣摺疊。當記錄層級設定為 'verbose'
或 'debug'
時,會顯示展開的內容。logger.status
:寫入暫時訊息,設定新的狀態,覆寫前一個狀態logger.clear()
:印出水平線。顯示時會像 logger.log
一樣logger.profile(...)
、logger.profileEnd(...)
:擷取剖析資料。在支援的情況下,會委派給 console.profile
執行時期記錄器 API 僅供開發工具使用,不打算包含在 生產模式 中。
const logging = require('webpack/lib/logging/runtime')
:要在執行時期使用記錄器,請直接從 webpack 載入logging.getLogger('name')
:依名稱取得個別記錄器logging.configureDefaultLogger(...)
:覆寫預設記錄器。const logging = require('webpack/lib/logging/runtime');
logging.configureDefaultLogger({
level: 'log',
debug: /something/,
});
logging.hooks.log
:將外掛套用至執行時期記錄器