实现一个Loader

本文总结了编写webpack Loader的思路,包括Loader的异步和同步处理、如何接收options参数、处理二进制文件、禁用缓存以及如何本地测试Loader。Loader本质上是一个处理文件内容的函数,可以对源代码进行各种数据操作,例如使用正则表达式移除console.log。通过this.callback或return返回处理结果,并可以利用sourceMap和meta传递额外信息。对于异步操作,需使用this.async()并调用回调函数完成内容返回。
摘要由CSDN通过智能技术生成

总结编写 loader 的思路

loader 是一个导出函数,有返回值,可以借助第三方模块和Node api 实现。
loader 可以使用 loader-utils 接收到options 中传递过来的参数
loader 的异步编写需要显示的申明 const callback = this.async() 表明异步。
loader 如果需要处理二进制文件也需要声明exports.raw = true
loader 的允许结果会被webpack缓存,如果需要关闭webpack的缓存结果需要声明this.cacheable(false)
编写后的本地loader 可以借助 Npm link 或 resolveLoader 导入。

在项目文件夹下创建一个文件error-loader.js

Loader本质上是一个函数,参数content是一段字符串,存储着文件的内容,最后将loader函数导出就可以提供给webpack使用了.

//error-loader.js
//loader函数
module.exports = function (content){
  console.log(this.query); // { name: 'hello' }
  return content;
}

webpack的配置文件在设置rules时(代码如下),只需要将use里的loader指向上面导出的loader函数的文件路径,这样webpack就能顺利引用loader了.另外我们还可以添加options属性给loader函数传参.

//webpack.config.js
//webpack配置
const path = require('path')
module.exports = {
   module:{
    rules:[
      {
        test
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值