const webpack = require("webpack"); class ReplaceCssPlugin { constructor(options) { this.options = options } apply(compiler) { compiler.hooks.emit.tapAsync( "ReplaceCssPlugin", (compilation, callback) => { // 遍历所有编译后的资源 Object.keys(compilation.assets).forEach((filename) => { if (filename.endsWith(".css")) { console.log(filename, "222"); // 替换:root 变为:host 支持沙盒不然 element css 不生效 const originalContent = compilation.assets[filename].source(); const replacedContent = originalContent.replace( /:root\{/g, ":root,:host{" ); // 重写资源内容 compilation.assets[filename] = { source: () => replacedContent, size: () => replacedContent.length, }; } }); callback(); } ); compiler.hooks.done.tap("compilation", () => { console.log("compilation"); }); } } module.exports = ReplaceCssPlugin;