以下是一个自定义loader replace-loader,实现一个类似模板引擎变量替换的简单功能

文件目录

.
├── dist
│   └── index.js            # 打包结果
├── loaders
│   └── replace-loader.js   # 自定义loader
├── src
│   └── index.js            # 要打包的文件入口
├── package.json            # 依赖配置
└── webpack.config.js       # 打包配置

package.json

{"name": "loader-demo","version": "1.0.0","description": "a webpack loader demo","scripts": {"build": "webpack"},"devDependencies": {"loader-utils": "^2.0.0","webpack": "^5.47.0","webpack-cli": "^4.7.2"}
}

webpack.config.js

'use strict';const path = require('path');module.exports = {// 打包入口entry: {index: './src/index.js',},// 指定输出地址及打包出来的文件名output: {path: path.join(__dirname, 'dist'),filename: '[name].js',},// Loader路径resolveLoader: {modules: ['node_modules', './loaders'],},module: {rules: [{test: /.js$/,use: {loader: 'replace-loader',// 传递参数options: {name: 'Tom',},},},],},// 开发环境mode: 'production',
};

loaders/replace-loader.js

const loaderUtils = require('loader-utils');module.exports = function (source) {// 获取参数let options = loaderUtils.getOptions(this);for (let [key, value] of Object.entries(options)) {source = source.replace(`{{${key}}}`, value);}return source;
};

src/index.js

console.log('hi {{name}}');

指定打包命令

$ npm run build

dist/index.js

console.log("hi Tom");

参考
面试官:请实现一个Sass-Loader

webpack:自定义loader相关推荐

  1. webpack自定义loader并发布到npm

    一.官网对loader的解释: 1.loader 是导出为一个函数的 node 模块.该函数在 loader 转换资源的时候调用.给定的函数将调用 loader API,并通过 this 上下文访问. ...

  2. webpack自定义loader

    创建自己的Loader 创建自己的Loader Loader是用于对模块的源代码进行转换(处理),css-loader.style-loader.babel-loader等. 如何自定义自己的Load ...

  3. Webpack自定义Loader和Plugin方法

    手写Loader Loader 本质上是导出函数的 JavaScript 模块,而该模块导出的函数被称为 Normal Loader,在开发 Loader时,我们可以在导出的函数上添加一个 pitch ...

  4. vue-cli Webpack之Loader原理及自定义Loader

    文章目录 1. Loader 分类与执行顺序 1.1 Loader 分类 1.2 Loader 执行顺序 1.3 使用Loader方式 1.3.1 内联 Loader 2. 开发 Loader 步骤 ...

  5. Webpack之Loader原理及自定义Loader

    文章目录 1. Loader 分类与执行顺序 1.1 Loader 分类 1.2 Loader 执行顺序 1.3 使用Loader方式 1.3.1 内联 Loader 2. 开发 Loader 步骤 ...

  6. webpack loader解析及自定义loader

    自定义实现webpack loader加载模块,解析指定的类型文件 loader loader是一个导出为函数的node模块,可通过this访问上下文. 特点: loader单一职责,只负责解决单一的 ...

  7. webpack的loader与plugin原理

    文章目录 loader原理 loader执行顺序 loader使用方式 loader的实现 参数 同步loader 异步loader Raw loader Pitching loader loader ...

  8. webpack之 loader

    开篇 loader不难,loader不难,loader不难.默念三遍,然后开始. loader 简介 loader 这个东西配置 webpack 的时候经常用到,刚开始会让人觉得有一种神秘感. 看了文 ...

  9. Unity puerts 自定义Loader和调试和ab包的注意点

    输出ab包 他会把你创建的ab包都打包 也就是在这里的创建的都打包 string assetBundleDirectory = Path.Combine(Application.streamingAs ...

最新文章

  1. 给GridView增加求和行
  2. java线程主要状态及转换_Java线程状态转换及控制
  3. 脸红是因为缺乏乙醛分解酶导致的酒精中毒
  4. 【Linux】一步一步学Linux——write命令(236)
  5. Opencv一维直方图的绘制
  6. AI时代的交换机什么样?华为CloudEngine 16800告诉你!
  7. 建筑与计算机技术,建筑设计中常用的计算机技术与注意点
  8. win 10配置安装iis
  9. python 行为驱动_什么是行为驱动的Python?
  10. APP推广有效果,APP地推要以用户需求为核心
  11. 【effective c++笔记】条款01 :视c++为一个语言联邦
  12. 合并多个js,css文件的方法 - 在服务端合并和压缩JavaScript和CSS文件
  13. java数据库查询类
  14. 我的五年百度博客文章列表
  15. 微信公众号查后端服务器IP,微信公众号平台接口开发 获取微信服务器IP地址方法解析...
  16. 003-Java技术体系
  17. 虚拟机运行python_虚的解释|虚的意思|汉典“虚”字的基本解释
  18. 支付宝付款弹窗 被浏览器拦截
  19. Java多线程 生产者-消费者问题示例
  20. 黑洞(black hole)

热门文章

  1. Nginx访问本地静态资源详细步骤
  2. 面向对象的程序设计1 理解对象—— JS学习笔记2015-7-4(第75天)
  3. TensorFlow实战——个性化推荐
  4. vue-admin-template开发遇到的问题汇总
  5. 数控铣床的可分度回转工作台设计
  6. 深入理解 python 虚拟机:令人拍案叫绝的字节码设计
  7. DVWA-low通关笔记
  8. 2 Arduino基本数字输出功能LED灯
  9. 高通在华起诉苹果:要求在中国禁止生产和销售 iPhone
  10. Linux串口设置命令stty和raw模式