前端开发那些事儿

loader

2021-02-17  本文已影响0人  bestCindy

webpack 做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定的文件中

更多的功能要借助 webpack loader 和 webpack plugins 完成

loader 本质上是一个函数,作用是将某个源码字符串转换成另一个源码字符串返回

在 webpack 的编译过程中,有一个步骤是:读取文件内容 --> 对文件内容进行语法分析 --> 生成 AST 抽象语法树

也就是说,webpack 是把文件当作 js 代码来处理的

但是有些时候,我们的文件内容并不是符合 js 语法的,所以就没有办法进行语法分析,也就不能进行后续的编译

这时候就需要 loader,通过 loader 这个函数,可以对 source code 进行一个转换,转换成 webpack 可以进行语法分析的代码

如图:


处理 loaders 的流程:


loaders 的配置:

module.exports = {
    mode: "development",
    module: {
        rules: [// 模块的匹配规则
            // 每个规则就是一个对象
            {
                // 正则表达式,匹配模块的路径
                test: /index\.js/,
                // 对于匹配的文件要使用哪些 loader
                use: [
                    // 每个加载器的使用是一个对象
                    {
                        // 加载器的路径
                        loader: "./loader/test-loader"
                    }
                ]
                // 第二种写法
                // use: ["loader1", "loader2"]
            },
        ], 
        // noParse 是否不要解析某些模块
    }
}

补充:option 里面的参数可以用 loader-utils 读出来

注意:拿到已经匹配好的 loaders 的数组之后是从后往前匹配的

上一篇下一篇

猜你喜欢

热点阅读