// @ts-nocheck /** * 在构建出的 js 中增加代码片段,用作显示调试状态 */ const os = require('os'); class DebugModePlugin { constructor(options = {}) { this.options = options; } apply(compiler) { const { webpack } = compiler; const { Compilation } = webpack; const { RawSource } = webpack.sources; const snippet = `${os.EOL}if(!window.__teamix_debug_mode__){window.__teamix_debug_mode__=true;var debugTag=document.createElement('div');debugTag.innerHTML='调试模式';var style='position:fixed;right:4px;bottom:4px;padding:0 4px;z-index:999999;pointer-events:none;font-size:14px;color:#fff;background-color:#159953;opacity:0.6;border-radius:4px';debugTag.setAttribute('style',style);document.body&&document.body.appendChild(debugTag)}`; compiler.hooks.thisCompilation.tap('DebugModePlugin', compilation => { compilation.hooks.processAssets.tap({ name: 'DebugModePlugin', stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONS, }, assets => { for (const asset in assets) { if (asset.endsWith('.js')) { compilation.updateAsset(asset, source => { return new RawSource(`${source.source()}${snippet}`); }); } } }); }); } } module.exports = DebugModePlugin;