什么是loader
loader其实是一种打包方案,loader可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。
自己编写的loader的使用
同普通loader一样,在webpack.config.js的module
中写新的rule
,还要在webpack.config.js新写一个配置项resolveLoader
(代码如下所示),意思是按名称现在node_modules
中找loader,找不到再去 ./loader 文件夹中找(自己写的loader放在该文件夹中,为replaceLoader.js)
1 | resolveLoader: { |
对loader传递数据
如上面的代码中,option即可用来传递参数,把想传递的参数写成option对象的属性。然后replaceLoader.js中用this.query.属性
即可得到这个参数;也可以使用loader-util中的getOption方法来得到这个option对象。
loader的编写
在这里,我们假设入口文件index.js中的代码内容仅为console.log('hello world');
,我们想编写一个loader对这个文件进行处理,实现把world
改成Jacleklm
。
loader其实是一个函数。在编写的时候,我们可以把loader放在一个单独的文件中,然后导出即可使用。注意在这里module.exports = function() { }
的function不能写成箭头函数,因为在loader的编写中我们会常用到this,这里用箭头函数可能会造成this的使用出现麻烦。最终代码如下:
1 | const loaderUtils = require('loader-utils') |