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完成,感慨能力之强大啊

相关推荐
懒大王爱吃狼26 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
逐·風4 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫5 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
尚梦5 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
GIS程序媛—椰子6 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山6 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
毕业设计制作和分享7 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
清灵xmf9 小时前
在 Vue 中实现与优化轮询技术
前端·javascript·vue·轮询
大佩梨9 小时前
VUE+Vite之环境文件配置及使用环境变量
前端
GDAL9 小时前
npm入门教程1:npm简介
前端·npm·node.js