教你手写一个简单的 webpack loader 与 plugin

本文档详细介绍了如何自定义webpack的loader和plugin。loader用于解析和转换文件,例如读取txt文件并将其内容转换为对象。plugin则通过编译过程中的钩子进行自定义操作,例如模拟htmlWebpackPlugin进行模板输出。通过本文,读者可以了解到创建这两个组件的基本步骤和工作原理,并提供官方文档链接供深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用了这么久 webpack 一直想简单的记录以下这篇博客来讲解如何手写自己所需的 webpack loader 和 plugin,说人话就是自定义 webpack 的加载器与插件,其实官方文档也有详细的记录,大家可直接查看官方文档都 ok 的
https://webpack.docschina.org/contribute/

loader

一、loader 是什么,有什么用

  1. 是 webpack 用于在编译过程中解析各类文件格式,并输出;
  2. 本质上就是一个 node 模块,通过写一个函数来完成自动化的过程;
  3. 由此我们就可以在开发模式下,通过解析各类前端无法解析的文件格式,然后将其解析后返回为对象或字符串供前端开发时使用,在 webpack 的编译过程中自动会将我们前端项目中引用的文件格式对应到指定 loader 解析后输出。

二、怎么写一个自定义 loader
接下来我将写一个非常简单的 loader 来解析 txt 文件,它将满足以下功能

  • 读取 txt 文件内容并输出为一个对象,对象内包括文件内容与文件名
  • 读取 webpack loader 选项,将内容中的 [name] 替换为我们选项 name 的值
      // webpack.config.js
      module.exports = {
   
        //...
        module: {
   
          rules: [
            {
   
              test: /\.txt$/,
              use: {
   
                loader: path.resolve(__dirname, './txt-loader.js'),
                options: {
   
                  name: 'YOLO'
                }
              }
            }
          ]
        }
      }
	// txt-loader.js
   var utils = require('loader-utils')

   module.exports = function (source) {
   
   const options = utils.getOptions(this)

   source = source.replace(/\[name\]/g, options.name)
     return `export default ${
      JSON.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值