webpack原理之开发第一个loader

这篇具有很好参考价值的文章主要介绍了webpack原理之开发第一个loader。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 搭建项目结构

整体项目结构如图:
webpack原理之开发第一个loader

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

npm init -y

webpack原理之开发第一个loader

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

webpack原理之开发第一个loader

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

webpack原理之开发第一个loader

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

至此基于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
    webpack原理之开发第一个loader

  • main.js
    webpack原理之开发第一个loader

4. 运行看效果

npm run dev

webpack原理之开发第一个loader
webpack原理之开发第一个loader
可以看到日志中有loader处理js文件时的输出日志,代表我们的第一loader就创建成功啦,虽然这个loader只是个过客,并没有对我们的js文件做任何处理,哈哈哈

但是通过这个例子,我们可以清晰的认识到loader的工作原理和运行方式,这为后面我们写比较复杂的 loader做了铺垫。文章来源地址https://www.toymoban.com/news/detail-497039.html

到了这里,关于webpack原理之开发第一个loader的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • webpack(三)loader

    loader 用于对模块的源代码进行转换,在 imporrt 或加载模块时预处理文件 webpack 做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定文件中。 在 webpack 内部,任何文件都是模块,不仅仅是 js 文件 默认情况下,遇到 import 或者 require 加载模块

    2024年02月10日
    浏览(42)
  • 【webpack】自定义loader

    📝个人主页:爱吃炫迈 💌系列专栏:前端工程化 🧑‍💻座右铭:道阻且长,行则将至💗 一个loader就是一个Node.js模块,这个模块需要导出一个函数,这个导出函数的工作就是获得处理前的源内容,对源内容进行处理后,返回处理后的内容 实现一个替换文件中姓名的loade

    2024年02月13日
    浏览(39)
  • 手写webpack的loader

    帮助webpack将不同类型的文件转换为webpack可识别的模块。 pre:前置loader normal:普通loader inline:内联loader post:后置loader 4类loader的执行顺序为pernormalinlinepost 相同优先级的loader执行顺序为:从右到左,从下到上。 例如: 使用Loader 的方式 配置方式:在 webpack.config.js 文件中指定

    2024年01月21日
    浏览(39)
  • webpack中常见的Loader

    loader 用于对模块的\\\"源代码\\\"进行转换,在 import 或\\\"加载\\\"模块时预处理文件 webpack做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定的文件中。如下图所示: 在webpack内部中,任何文件都是模块,不仅仅只是js文件 默认情况下,在遇到impo

    2024年02月13日
    浏览(31)
  • 在uniapp开发编译成小程序时,模板编译错误Module build failed (from ./node_modules/@dcloudio/webpack-uni-mp-loader/lib/

    解决方案:应该是你的ifdef 和 endif不匹配。你自己看看你的代码,是不是有的地方只有一个endif或者只有ifdef,或者说写错了,检查下。我的就是少了endif. 希望我的解决方案能帮到你

    2024年02月16日
    浏览(50)
  • Webpack的Loader和Plugin

    1.1 Loader作用 把js和json外的其它文件转为Webpack可以识别的模块 1.2 Loader简介 1.2.1 Loader类型 1.总类型 pre: 前置loader normal: 普通loader inline: 内联loader post: 后置loader 2.默认类型 默认为normal类型 3.修改类型 配置时可以通过enforce修改 pre,normal,post 类型。 1.2.2 Loader顺序 1.总顺序

    2024年04月18日
    浏览(41)
  • Webpack加载器(Loaders)的执行顺序

    在Webpack中,加载器的执行顺序是从右往左、从下往上的。为什么会选择这样的执行顺序呢?本文将介绍Webpack加载器执行顺序的原因和解释,并通过一个CSS加载器的示例来说明。 加载器的执行顺序的设计主要考虑到提供更灵活的配置和处理模块的能力。 从右往左的顺序 从右

    2024年02月11日
    浏览(52)
  • webpack loader和plugins的区别

    在Webpack中,Loader和Plugin是两个不同的概念,用于不同的目的。 Loader是用于处理非JavaScript模块的文件的转换工具。它们将文件作为输入,并将其转换为Webpack可以处理的模块。例如,当您在Webpack配置中使用Babel Loader时,它会将ES6+的JavaScript代码转换为ES5代码,以便在旧版浏览器

    2024年02月09日
    浏览(39)
  • 详细介绍Webpack5中的Loader

    loader用于帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 pre: 前置 loader normal: 普通 loader,没有用enforce指定就是normal inline: 内联 loader post: 后置 loader pre normal inline post 相同优先级的 loader 执行顺序为:从右到左,从下到上。 1.配置方式:在 webpack.config.js 文件

    2024年02月15日
    浏览(45)
  • 如何开发和搭建一个优质的Web3.0/区块链项目?

    在区块链世界和 加密领域 中 、Web3 绝对算得上是一个耀眼的明星了,现在的风头明显盖过前两位老大哥了。 相信许多人也都想尝试熟悉或者参与区块链,加密领域和 Wed3之中,今天我们就来谈谈如何以软件开发的角度,来搭建一个优质的区块链相关项目。 如何创建一个优质

    2024年01月16日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包