webpack原理之开发第一个loader

文章介绍了如何搭建基于webpack的项目结构,包括初始化package.json,设置打包入口,配置webpack.config.js,安装依赖,配置开发环境命令,以及打包运行。此外,还详细讲解了如何编写和配置第一个简单的loader,通过这个过程理解loader的工作原理。
摘要由CSDN通过智能技术生成

一. 搭建项目结构

整体项目结构如图:
在这里插入图片描述

1. 初始化包管理器package.json

npm init -y

在这里插入图片描述

2. 打包入口文件src/main.js

在这里插入图片描述

3. 单页面入口public/index.html

在这里插入图片描述

4. 配置webpack.config.js
const path = require('path')
const HtmlWebpackPlugin = require("html-webpack-plugin")

module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "./dist"),
    clean: true
  },
  module: {
    rules:[]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: path.resolve(__dirname, "public/index.html"),
    }),
  ],
  // 开发服务器
  devServer: {
    host: "localhost", // 启动服务器域名
    port: "8888", // 启动服务器端口号
    open: true, // 是否自动打开浏览器
  },
  // 模式
  mode: "development", // 开发模式
  devtool: "eval-source-map", // 开发环境下使用
}
5. 安装依赖

npm i webpack webpack-cli html-webpack-plugin webpack-dev-server -D

6. 配置开发环境package.json打包命令
 "scripts": {
    "dev": "npx webpack serve --config ./webpack.config.js"
  },
7. 打包看效果

npm run dev

在这里插入图片描述

至此基于webpack的一个简单的项目开发环境就搭建完成啦

二、开发第一个loader

1. 编写loader函数,该函数接收一个参数source,表示需要转换的文件内容,然后对source进行处理并返回新的内容。

例如,以下是一个简单的loader函数:

/*
  loader就是一个函数
  当webpack解析资源时,会调用相应的loader去处理
  loader接受到文件内容作为参数,返回内容出去
    content 文件内容
    map SourceMap
    meta 别的loader传递的数据
*/

module.exports = function (content, map, meta) {
    console.log('loader加载的资源', content);
    return content;
};
2. 在webpack配置文件中添加loader的配置,可以使用相对路径或绝对路径指向loader函数所在的文件。

我们可以在webpack配置文件中添加以下代码:

module.exports = {
  // ...
   module: {
    rules: [
      {
        test: /\.js$/,
        loader: "./loaders/custom-loader.js",
      },
    ]
  },
};
3. 在main.js同级目录下创建一个test.js,然后再main.js中导入
  • test.js
    在这里插入图片描述

  • main.js
    在这里插入图片描述

4. 运行看效果

npm run dev

在这里插入图片描述
在这里插入图片描述
可以看到日志中有loader处理js文件时的输出日志,代表我们的第一loader就创建成功啦,虽然这个loader只是个过客,并没有对我们的js文件做任何处理,哈哈哈

但是通过这个例子,我们可以清晰的认识到loader的工作原理和运行方式,这为后面我们写比较复杂的 loader做了铺垫。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jieyucx

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

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

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

打赏作者

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

抵扣说明:

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

余额充值