webpack自定义loader

loader介绍

在webpack中打包只能解析js文件,对于一些图片、css等资源需要借助loader来进行文件的转码,loader是对模块非js文件进行转换的插件,例如 webpack中css-loader、style-loader、baber-loader;

自定义loader

loader本质上是一个导出为函数的js模块,即函数

  1. 使用webpack 解析 test.txt文件
javascript 复制代码
<script>
  export default {
    a: 1,
    b: 2
  }
</script>
  1. 初始化基于webpack工程安装对应的webpack webpack-cli
  • npm init 初始化项目
  • 创建src/index.js 入口文件
  • 创建public/index.html
  • 创建webpack.config.js,填入配置
  • npm i -D webpack webpack-cli
  • 配置build 命令为 webpack
  • 执行npm run build完成打包构建
  1. webpack.config.js配置
javascript 复制代码
const path = require('path')

module.exports = {
    mode: 'development', // 指定环境
    entry: './src/index.js', // 入口文件
    output: {  // 输出文件
        path: path.resolve(__dirname, './dist'),
        filename: 'bundle.js'
    },
    module: {
        rules: [
          {
                test: /\.imooc$/,
                use: [path.resolve(__dirname, './loader/test-loader.js')]  // 用来解析对应的loader文件
            }
        ]
    }
}
  1. 解析test.txt test-loader.js文件
javascript 复制代码
const REG = /<script>([\s\S]+?)<\/script>/
module.exports = function(source) {
    console.log('== test-loader source', source)
    const __source = source.match(REG)
    console.log(__source)
    return __source && __source[1] ? __source[1] : source
}

// 判断当前模块是否为主模块,如果为主模块,则运行以下代码
// 用来对loader进行单独测试
if(require.main === module) {
    const source = `
      <script>
        export default {
            a: 1,
            b: 2
        }
        </script>
    `
    const match = source.match(REG)
    console.log(match)

    console.log(' '.match(/\s/))
}

最后执行npm run build

控制台解析了对应的文件

相关推荐
天***885216 分钟前
Edge 浏览器离线绿色增强版+官方安装包,支持win7等系统
前端·edge
漫游的渔夫24 分钟前
别再直接 `json.loads` 了!AI 返回的 JSON 坑位指南
前端·人工智能
软件工程师文艺36 分钟前
从0到1:Claude Code如何用React构建CLI应用
前端·react.js·前端框架
M ? A1 小时前
Vue 迁移 React 实战:VuReact 一键自动化转换方案
前端·vue.js·经验分享·react.js·开源·自动化·vureact
yuki_uix1 小时前
重排、重绘与合成——浏览器渲染性能的底层逻辑
前端·javascript·面试
沃尔威武1 小时前
调试黑科技:Chrome DevTools时间旅行调试实战
前端·科技·chrome devtools
Bruce1231 小时前
openclaw学习日常(一)openclaw在WSL中搭建
人工智能·node.js
yuki_uix1 小时前
虚拟 DOM 与 Diff 算法——React 性能优化的底层逻辑
前端·react.js·面试
yuki_uix1 小时前
从输入 URL 到页面显示——浏览器工作原理全解析
前端·面试
weixin_408099672 小时前
【完整教程】天诺脚本如何调用 OCR 文字识别 API?自动识别屏幕文字实战(附代码)
前端·人工智能·后端·ocr·api·天诺脚本·自动识别文字脚本