资讯专栏INFORMATION COLUMN

从零开始的webpack生活-0x014:CustomLoader自定义loader

taohonghui / 2666人阅读

摘要:接下来将的本质和自定义。环境配置这一次需要两个项目,一个项目是,实现了,一个是,使用了。当然没有必要去真的重复制造轮子,只是为了掌握这种造轮子的技术,对理解整个工程,对理解功能提供更多思路而已。

0x001 概述

上一章我们讲了eslint-loader的配置,常用类型的常用loader已经都讲完了,大体上其他的都大同小异,需要去各大loader的官方查阅用户手册就可以了。接下来将loader的本质和自定义loader

0x002 环境配置

这一次需要两个项目,一个项目是custome-loader,实现了custome-loader,一个是user,使用了custom-loader

</>复制代码

  1. $ mkdir 0x0014-custome-loader
  2. $ cd 0x0014-custome-loader
0x003 custome-loader实现

custome-loader项目配置

</>复制代码

  1. $ mkdir custome-loader
  2. $ cd custome-loader
  3. $ npm init -y

实现custome-loader

</>复制代码

  1. $ vim ./index.js
  2. /**
  3. * 实现一个函数
  4. * 作用是将`var`替换成`let`
  5. * @param content 字符串
  6. * @returns string 字符串 */
  7. module.exports = function (content) {
  8. console.log(content)
  9. content = content.replace(/var/g, "let")
  10. console.log(content)
  11. return content;
  12. };

测试

</>复制代码

  1. $ vim ./test/index.js
  2. // ./test/index.js
  3. var custom = require("./../index")
  4. custom("var name="张三"")
  5. $ node ./test/index.js
  6. 元数据 var name="张三"
  7. 处理之后 let name="张三"

0x004 custome-loader使用

配置

</>复制代码

  1. $ mkdir user
  2. $ cd user
  3. $ npm init -y
  4. $ vim webpack.config.js
  5. // ./webpack.config.js
  6. const path = require("path");
  7. module.exports = {
  8. entry : {
  9. "index": ["./src/index.js"],
  10. },
  11. output: {
  12. path : path.join(__dirname, "dist"),
  13. filename: "[name].bundle.js"
  14. }
  15. ;

本地安装依赖

</>复制代码

  1. $ npm install --sve-dev /MY_PROJECT/PROJECT_OWN/webpack_study/0x014-custom-loader/custom-loader
  2. # 输出
  3. pm WARN user@1.0.0 No description
  4. npm WARN user@1.0.0 No repository field.
  5. +custom-loader@1.0.6
  6. updated 1 package in 0.3s

修改配置

</>复制代码

  1. const path = require("path");
  2. module.exports = {
  3. entry : {
  4. "index": ["./src/index.js"],
  5. },
  6. output: {
  7. path : path.join(__dirname, "dist"),
  8. filename: "[name].bundle.js"
  9. },
  10. module: {
  11. rules: [
  12. {
  13. test : /.js$/,
  14. loader: "custom-loader",
  15. }
  16. ]
  17. }
  18. }
  19. ;

打包

</>复制代码

  1. $ webpack
  2. # 输出
  3. 元数据 var name="张三"
  4. var age=14
  5. 处理之后 let name="张三"
  6. let age=14
  7. Hash: 4040662a699dbc91f8dd
  8. Version: webpack 3.8.1
  9. Time: 68ms
  10. Asset Size Chunks Chunk Names
  11. index.bundle.js 2.62 kB 0 [emitted] index
  12. [0] multi ./src/index.js 28 bytes {0} [built]
  13. [2] ./src/index.js 25 bytes {0} [built]

查看打包结果

</>复制代码

  1. /* 1 */
  2. /***/ (function(module, exports) {
  3. let name="张三"
  4. let age=14
  5. /***/ })
  6. /******/ ]);

可以看到,webpack在打包的时候,将./src/index.js的内容作为我们定义在custome-loader中的方法的参数,同时执行该方法,将处理后的返回值作为结果输出到./dist/index.bunle.js.

0x005 更多配置

这里只是实现了一个最简单的loader,而webpack官方还提供了许多其他的API来实现功能更加强大的loader,凭借这些API我们也可以写出自己的file-loaderjson-loader之类的。当然没有必要去真的重复制造轮子,只是为了掌握这种造轮子的技术,对理解整个webpack工程,对理解web功能提供更多思路而已。

0x006 资源

源代码

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89639.html

相关文章

  • 从零开始webpack生活-0x001:webpack初次相逢

    摘要:同时不能直接单纯的指定输出的文件名称,比如,将会报错,可以换成以下方式指定,或者其他类似方式。如果打包过程出现错误,比如语法错误,将会在控制台以红色文字显示,并且在你修复之后会再次打包。 0x001 概述 其实我不知道怎么写,所以决定就一块一块的写点平常配置的过程,根据不同东西稍微分区一下就好了 0x002 初始化项目结构 $ mkdir webpack_study $ cd webp...

    Turbo 评论0 收藏0
  • 从零开始webpack生活-0x015:ExtractTextWebpackPlugin分离样式

    摘要:概述上一章讲的是,这一章讲的是依旧是没有任何关系。配合插件自动插入修改配置打包并查看它以的形式被插入头部多入口文件打包添加入口修改插件命名方式打包并查看更多用法,请查阅关于章节资源源代码 0x001 概述 上一章讲的是Dll,这一章讲的是ExtractTextWebpackPlugin,依旧是没有任何关系。 0x002 插件介绍 这个插件用来将css导出到单独文件 0x003 栗子-不...

    Jonathan Shieber 评论0 收藏0
  • 从零开始webpack生活-0x011:StylingLoader装载样式

    0x001 概述 上一章讲的是装载模板,这一章讲的是装载样式 0x002 配置环境 $ mkdir 0x011-styling-loader $ cd 0x011-styling-loader $ npm init -y $ npm install --save-dev webpack $ touch ./src/index.js $ vim webpack.config.js // ./web...

    mylxsw 评论0 收藏0
  • 从零开始webpack生活-0x010:TemplatingLoader装载模板

    摘要:概述上一章讲的时候关于文件相关的,这一章讲的是模板相关的。环境配置栗子加载安装依赖包编写并引入配置低于否则使用打包并查看结果可以看到,被打包成了字符串,并封装成模块导出。更多资源,请查阅的仓库和官网资源源代码 0x001 概述 上一章讲的时候关于文件相关的loder,这一章讲的是模板相关的loder。 0x002 环境配置 $ mkdir 0x010-templating-loader...

    jk_v1 评论0 收藏0
  • 从零开始webpack生活-0x012:TranspilingLoader装载脚本

    摘要:概述上一章讲的是样式装载相关的,这一章见得是脚本加载相关的环境配置栗子加载安装依赖修改配置添加配置文件使用编写脚本打包并查看结果可以看到,语法被自动转化成了更多配置请查阅关于章节栗子加载安装依赖 0x001 概述 上一章讲的是样式装载相关的loader,这一章见得是脚本加载相关的loader 0x002 环境配置 $ mkdir 0x012-transliling-loader $ c...

    Tonny 评论0 收藏0

发表评论

0条评论

taohonghui

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<