webpack.config.js配置文件:
创建的loader:
查看打包后的结果:原来index.js中的hellow webpack 经过创建的loader解析后替换成了options传过去的xiaoming,成了 hello xiaoming
其实我们可以用一个官方推荐给我们的工具 loader-utils 专门用于把外部options的值传入loader中
安装:npm i loader-utils -D;
在我们自己的loader中:先引用,后用这个模块下的方法传入this即可拿到配置文件中这个loader下对应的options
loaderUtils.getOptions(this)
this.async() 的使用:用于loader里面有异步操作的情况:
运用this中的async:解决以上异步问题:
多个loader的使用:
webpack.config中:注意loader解析是有顺序的,从后往前。
在看入口文件:
运行npx webpack打包执行:查看打包后的js文件:
解析过程:
loader是从后面往前执行,先执行后面的loader,后者里面拿到index.js中的hello webpack 把webpack替换为了自己options中定义的name的值 javascript,所以解析后就成了hello javascript。接着再进入到前面那个loader中进行解析, 前面loader配置里没有optios,也没有用,直接替换,把javascipt替换为了2021,所以就成了 hello 2021,我们在打包后的main.js文件中看到结果确实是这样。
模拟系统loader的样子 需要用到 resolveLoader
参考loader API https://webpack.js.org/api/loaders