loader.php作用,VueLoaderPlugin作用

73192ff408b40e688aeec5b070425c26.png

在webpack配置里加入new VueLoaderPlugin,

在plugin里打断点

0486eb010fd2b752d138cf3ce1a3c26a.png

然后debug:

在这个地方:

55385b50323dd95eabfe26bee936ba1d.png

可以发现,在webpack初始化的阶段..webpack.js刚开始执行的时候 这个newPlugin就应用到compiler中了,

看一下vueLoaderPlugin的内容:

2e2383f1ee4b6c05268f2563eab8a7d8.png

e7d22ce743a690addbb2da356f0a668c.png

就是先读取compiler.option.module.rule,找到给.vue或.vue.html文件进行配置的那些个rule(如:test:/.vue$/ ) 的rule。

加入pitcher这个rule规则,

pitcher里面有一个pitcher-loader,判断条件是resourceQuery中包含"vue", (比如 xxx.xx?vue&xxxx

将pitcher放到最开始,clonedRule放到中间,然后把vueRule放到最后(里面包含了你配置的vue-loader)。

其中对clonedRules也进行了一些处理

clonedRule是除了vueRule的所有其他rule,VueLoaderPlugin对所有的这些个rule的resource和resourceQuery都进行了重写:

在resourceQuery方法中添加了

fakeResourcePath,会把原resource和提取出的query中的lang字段,进行合并,

然后用rule中原始的resource过滤方法对fakeResourcePath进行过滤,看能否满足条件。

*对于vue+ts的写法,会在vue的script标签中加上lang='ts'

当处理script标签部分内容的时候,fakeresourceQuery会变成xx.vue.ts

而ts-loader的resource过滤方法是以/.tsx?$/结尾的,所以最终能匹配上。

(就是靠下面这句话)

43ce35056916c64925d0b07f02b20900.png

总结:VueLoaderPlugin主要就是在处理rule。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值