我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

    • nodejs

    • git

    • CI

    • 小程序

    • docker

    • Typescript

    • webpack

      • webpack到底有什么作用
      • webpack能给前端做哪些性能优化
      • webpack能给前端做哪些性能优化
      • 说说Webpack中常见的Loader?解决了什么问题?
      • 说说webpack proxy的工作原理?
      • 说说webpack中常见的Plugin?解决了什么问题?
      • 说说webpack热更新的理解
      • 说说webpack的构建流程?
      • 说说前端打包工具还有哪些
      • 说说对webpack的理解, 解决了什么问题
      • 说说编写loader和plugin的思路
        • 是什么
        • 编写思路
          • loader
          • plugin
        • FAQ
    • 安全

  • 基础

  • 框架

  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 大前端
  • webpack
fangdown
2021-08-09
目录

说说编写loader和plugin的思路

# 是什么

  • loader: 文件转换器,将A文件进行编译形成B文件,操作的是文件,本质是一个函数,不能用箭头函数,this是webpack提供的对象
  • plugin: 是一个函数或者是一个包含apply方法的对象

# 编写思路

# loader

module.exports = function (src) {
  if (src) {
    console.log('--- reverse-loader input:', src)
    src = src.split('').reverse().join('')
    console.log('--- reverse-loader output:', src)
  }
  return src;
}

# plugin

把@import "/static/css/vendor.wxss"; 改为:@import "/subPages/enjoy_given/static/css/vendor.wxss";

class CssPathTransfor {
  apply (compiler) {
    compiler.plugin('emit', (compilation, callback) => {
      console.log('--CssPathTransfor emit')
      // 遍历所有资源文件
      for (var filePathName in compilation.assets) {
        // 查看对应的文件是否符合指定目录下的文件
        if (/static\/css\/pages/i.test(filePathName)) {
          // 引入路径正则
          const reg = /\/static\/css\/vendor\.wxss/i
          // 需要替换的最终字符串
          const finalStr = '/subPages/enjoy_given/static/css/vendor.wxss'
          // 获取文件内容
          let content = compilation.assets[filePathName].source() || ''
          
          content = content.replace(reg, finalStr)
          // 重写指定输出模块内容
          compilation.assets[filePathName] = {
            source () {
              return content;
            },
            size () {
              return content.length;
            }
          }
        }
      }
      callback()
    })
  }
}
module.exports = CssPathTransfor

# FAQ

参考 (opens new window)

#webpack
上次更新: 2021/12/19, 18:05:42
说说对webpack的理解, 解决了什么问题
常见的web安全攻击有哪些及如何防范

← 说说对webpack的理解, 解决了什么问题 常见的web安全攻击有哪些及如何防范→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式