Wsh's blog Wsh's blog
首页
  • 基础知识
  • ArkUI
  • UIAbility
  • 组件通信方式
  • 前端缓存
  • React
  • typescript
  • javascript
  • flutter
  • node
  • webpack
web3D😉
宝库📰
  • 分类
  • 标签
  • 归档
龙哥的大🐂之路 (opens new window)
GitHub (opens new window)

wsh

热爱前端的程序媛
首页
  • 基础知识
  • ArkUI
  • UIAbility
  • 组件通信方式
  • 前端缓存
  • React
  • typescript
  • javascript
  • flutter
  • node
  • webpack
web3D😉
宝库📰
  • 分类
  • 标签
  • 归档
龙哥的大🐂之路 (opens new window)
GitHub (opens new window)
  • 主要功能
  • 核心概念
  • tree shaking
  • 模块联邦
  • 热更新机制
  • 构建速度和体积优化
  • 打包原理
  • 自定义plugin/loader
    • 1. plugin概念
    • 2. plugin语法
    • 3. loader概念
    • 4. loader语法:
    • 5. loader机制:
  • webpack
2022-05-18
目录

自定义plugin/loader

# 1. plugin概念

  • webpack插件是一个具有apply方法的Javascript对象。apply方法会被webpack compiler调用,并且在整个编译生命周期都可以访问compiler对象。
  • 原理:通过在生命周期的钩子中挂载函数,来实现功能扩展。

# 2. plugin语法

class MyPlugins {
  constructor(options) {
    console.log("插件选项", options);
  }
  // 必须带有apply方法
  apply(compiler) {
    // compilation是本次打包的上下文
    compiler.hooks.emit.tap("插件名称", (compilation) => {
      console.log("webpack构建过程开始", compilation);
    });
  }
}
module.exports = MyPlugins;

# 3. loader概念

  • loader本质上就是一个ESM模块,它导出一个函数,在函数中对打包函数进行资源转换

提示

v4: loader-utils(接受loader的配置项) webpack 5 已经可以通过this.query 直接获取loader的options配置,所以不需要利用loader-utils工具获取。

# 4. loader语法:

v4

const marked = require('marked');
const { getOption } = require('loader-utils')
module.exports = function(source) {
    const html = marked.parse(source);
    const options = getOption(this);
    console.log(options, '利用loader-utils工具获取');
    return `module.exports = ${JSON.stringify(html)}`;
}

v5

const marked = require('marked');
module.exports = function(source) {
    const html = marked.parse(source);
    console.log(this.query, 'loader的options配置')
    return `module.exports = ${JSON.stringify(html)}`;
}

提示

注意声明函数的时候,不要使用箭头函数,因为它指向当前模块,如果需要在相关函数中取得配置项,需要改为普通函数

# 5. loader机制:

#webpack
打包原理

← 打包原理

最近更新
01
组件通信方式
01-07
02
UIAbility
01-07
03
ATKTS
01-06
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Wsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式