webpack插件给所有的:src文件目录增加前缀

1.webpack4的版本写法

javascript 复制代码
class AddPrefixPlugin {
  apply(compiler) {
    compiler.hooks.compilation.tap('AddPrefixPlugin', (compilation) => {
      HtmlWebpackPlugin.getHooks(compilation).beforeEmit.tapAsync(
        'AddPrefixPlugin',
        (data, cb) => {
          // 使用正则表达式替换所有包含 /static/file/ 的路径
          data.html = data.html.replace(/\/static\/file\//g, '/zhgdxmf/static/file/');
          cb(null, data);
        }
      );
    });
    compiler.hooks.emit.tapAsync('AddPrefixPlugin', (compilation, callback) => {
      // 遍历所有输出的资源文件,替换其中的 /static/file/ 路径
      Object.keys(compilation.assets).forEach((assetName) => {
        if (assetName.endsWith('.js') || assetName.endsWith('.html')) {
          let content = compilation.assets[assetName].source();
          content = content.replace(/\/static\/file\//g, '/zhgdxmf/static/file/');
          compilation.assets[assetName] = {
            source: () => content,
            size: () => content.length
          };
        }
      });
      callback();
    });
  }
}

module.exports = AddPrefixPlugin;

webpack 2 的版本

javascript 复制代码
function AddPrefixPlugin(options) {
  this.options = options || {};
}

AddPrefixPlugin.prototype.apply = function(compiler) {
  compiler.plugin('compilation', (compilation) => {
    compilation.plugin('html-webpack-plugin-before-html-processing', (htmlPluginData, callback) => {
      // 使用正则表达式替换所有包含 /static/file/ 的路径
      htmlPluginData.html = htmlPluginData.html.replace(/\/static\/file\//g, '/zhgdxmf/static/file/');
      callback(null, htmlPluginData);
    });

    compilation.plugin('optimize-assets', (assets, callback) => {
      // 遍历所有输出文件,替换其中的 /static/file/ 路径
      Object.keys(assets).forEach((assetName) => {
        if (assetName.endsWith('.js') || assetName.endsWith('.html')) {
          let content = assets[assetName].source();
          content = content.replace(/\/static\/file\//g, '/zhgdxmf/static/file/');
          assets[assetName] = {
            source: () => content,
            size: () => content.length
          };
        }
      });
      callback();
    });
  });
};

module.exports = AddPrefixPlugin;

使用


全程借助chatgpt完成,感慨能力之强大啊

相关推荐
GISer_Jing42 分钟前
前端图形渲染 html+css、canvas、svg和webgl绘制详解,各个应用场景及其区别
前端·html·图形渲染
零凌林44 分钟前
使用exceljs将excel文件转化为html预览最佳实践(完整源码)
前端·html·excel·vue3·最佳实践·文件预览·exceljs
二十雨辰1 小时前
[CSS3]属性增强1
前端·css·css3
waterHBO2 小时前
直接从图片生成 html
前端·javascript·html
Growthofnotes2 小时前
VSCode中Node.js 使用教程
ide·vscode·node.js
王佳斌2 小时前
node.js文件系统(fs) - 创建文件、打开文件、写入数据、追加数据、读取数据、创建目录、删除目录
node.js
互联网搬砖老肖3 小时前
React组件(一):生命周期
前端·javascript·react.js
我科绝伦(Huanhuan Zhou)3 小时前
深入解析Shell脚本编程:从基础到实战的全面指南
前端·chrome
小马哥编程3 小时前
React和Vue在前端开发中, 通常选择哪一个
前端·vue.js·react.js
aklry3 小时前
uniapp实现在线pdf预览以及下载
前端·pdf·uni-app