记录一个 webpack 插件

89 阅读1分钟

是个多页面项目 多个html 打包需要打成tar包,根据环境添加vconsole

const cp = require("child_process");

class BuildTarPlugin {
  apply(compiler) {
    compiler.hooks.done.tap("myBuildTar", (stats) => {
      if (process.argv.slice(2).includes("build")) {
        cp.exec(
          `tar -cvf ${process.env.VUE_APP_OUTPUT_DIR}.tar ${process.env.VUE_APP_OUTPUT_DIR}`
        );
      }
    });
    if (!process.env.VUE_APP_IS_CONSOLE) return;
    compiler.hooks.compilation.tap("addVConsole", (compilation, callback) => {
      compilation.plugin("html-webpack-plugin-before-html-processing", function(
        htmlPluginData,
        callback
      ) {
        htmlPluginData.html = htmlPluginData.html.replace(
          "</html>",
          "<script src='https://unpkg.com/vconsole@latest/dist/vconsole.min.js'></script><script>var vConsole = new window.VConsole();</script></html>"
        );
      });
    });
  }
}

module.exports = BuildTarPlugin;