webpack - loader 学习记录(二)

以下是参加 千锋的《前端架构进阶实战训练营》 中学习到的知识点。
摘录了一些暂时还无法用自己的话描述的定义性知识与常规配置示例。
知识点没有全部记录在案,只记录个人真正吸收的知识,如有需要可联系我代为推荐。

webpack - loader 学习记录(二)

一、创建一个loader

千言万语不如自己实践,首先创建一个js,用于被webpack引入为loader。

function HelloLoader(content) {
  console.log("***content", content);
  console.log("***data.name", this.data.name);
  // bgColor -> background-color
  content = content.replace(/bgColor/g, "background-color");
  return content;
}

HelloLoader.pitch = function (request, prequerest, data) {
  console.log("***hello pitch -> request", request);
  data.name = "hello pitch";
};

module.exports = HelloLoader;

以上 HelloLoader 为一个回调函数,webpack 执行 loader 执行到这里时会调用这个方法,将信息传入其中。我们可以在 HelloLoader 中获取到上下文,并实现自己的loader方法。
其中pitch需要多注意,如果返回的值不是undefined,会产生熔断反应(即:吃完饭就掀桌子,后面的loader将不被执行)

二、配置webpack.config.js

const path = require("path");
const webpack = require("webpack");
module.exports = {
  mode: "development",
  entry: "./src/index.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "dist"),
  },
  resolveLoader: {
    alias: {
      "hello-loader": path.resolve(__dirname, "./loaders/HelloLoader.js"),
    },
  },
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.css$/i,
        use: ["hello-loader"],
        enforce: "pre",
      },
    ],
  },
};

我们可以通过webpack.config.jso里配置我们希望项目执行的loader,但是要注意传入当前__dirname,毕竟传入后相对位置及信息就会有误。
这里使用了path.resolve(__dirname,“./loaders/HelloLoader.js”),在上方resolveLoader、alias注册方法后,还需要在module.rules内配置的规划整理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值