loader是导出为一个函数的node模块,该函数在loader转换资源时调用,给定函数将调用loader API,并通过this上下文访问
最简单的loader源码:
1 | module.exports = function(source){ |
获得Loader的options:
1 | const loaderUtils = require("loader-utils") |
返回其他结果
有些场景下还需要返回除了内容外的东西,比如source Map,以方便调试源码
1 | module.exports = function(source){ |
this.callback是webpack给loader注入的api,以方便loader和webpack之间的通信,this.callback详细用法:
1 | this.callback( |
同步和异步
loader有同步和异步,同步loader的转换流程都是同步的,转换完成后再返回结果,但在有些场景下转换是异步的,例如一些网络请求
1 | module.exports = function(source) { |
本地测试自定义loader:
1.在rule对象使用path.resolve指定一个本地文件
1 | const path = require('path') |
匹配多个loader可以使用resolveLoader.modules配置,webpack将会从这些目录中搜索这些loaders,例如你的项目中有一个/loaders本地目录:
webpack.config.js:
1 | module.exports = { |