webpack中编写自定义loader和plugin,及如何调试(debug)webpack,vuecli等脚手架

debug(调试)webpack:

因为plugin和loader的编写需要nodejs环境,需要追踪一些参数,这时候调试就显得很重要了,但调试webpack不像在浏览器中debug那么轻松,需要一些配置:

首先在package.json中加入如下代码: 改命令表示调试webpack并停在第一行

 "scripts": {
   
    "start": "node --inspect-brk ./node_modules/webpack/bin/webpack.js"
  }

调试分为两种:

  1. 浏览器中调试
  2. vscode中调试
浏览器中debug:

命令行直接执行npm run start
在这里插入图片描述
出现上述调试,说明启动成功,打开浏览器,打开开发者工具,可以看到控制台多了一个选项
在这里插入图片描述
在这里插入图片描述
到这里说明调试成功了

vscode中调试(我更喜欢的方式):

更改package.json如下:

 "scripts": {
   
    "start": "node --inspect-brk=5858 ./node_modules/webpack/bin/webpack.js"
  },

点击vscode中如下按键创建launch.json文件:
在这里插入图片描述
在这里插入图片描述

更改launch.json文件如下:端口好要对上

{
   
  // 使用 IntelliSense 了解相关属性。
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
   
      "type": "node",
      "request": "launch",
      "name": "启动程序",
      "skipFiles": ["<node_internals>/**"],
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "start"],
      "port": 5858
    }
  ]
}

此时按F5或者点击此处即可开始debug在这里插入图片描述
效果如下:
在这里插入图片描述

同理,如果你是vue或者react的脚手架创建出来的项目,只需要把script中调试的js文件换成cli中的核心起始js文件即可,以vuecli为例,package.jsonscript换成如下:

 "scripts": {
   
        "debug": "node --inspect-brk=9229 ./node_modules/@vue/cli-service/bin/vue-cli-service.js serve"
  }



loader:

loader本质上是一个函数

在一个loader.js文件中编写如下代码:

module.exports = function (content, map, meta) {
   
   console.log(content);
	return content;
}

webpack.config.js配置如下:

module.exports = {
   
  module: {
   
    rules: [
      {
   
        test: /\.js$/,
        loader: 'babelLoader',
      },
    ]
  },
}

那么当执行webpack的时候,所有js文件都会经过我们编写的loader,content中的内容即是源码,我们可以通过一些正则,方法把源码转换后打包,这就是loader的原理了

loader的分类:

同步:
写法一:

//同步loader
module.exports = function (content, map, meta) {
   
  return content;
}

写法二:

module.exports = function (content, map, meta) {
   
  this.callback(null, content, map, meta);
}

异步:

// 异步loader
module.exports = function (content, map,
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codingWeb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值