美文网首页前端大讲堂让前端飞
如何写一个 webpack loader

如何写一个 webpack loader

作者: 前端大课堂 | 来源:发表于2019-04-28 10:46 被阅读1次

本文主要讲如何快速写一个 webpack loader 和如何调试 webpack loader. 

01 背景 

webpack loader 用于对模块的源代码进行转换。loader 可以使你在 import 或"加载"模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。

通常在前端面试中都会问到用了什么 loader 以及如何实现一个 loader, 以及 webpack loader 的加载顺序是什么。 

现在就让我们来梳理下整个流程。 

02 开始

loader 是导出为一个函数的 node 模块。该函数在 loader 转换资源的时候调用。给定的函数将调用 loader API,并通过 this 上下文访问。

如下文,我们写一个空的 loader, 

module.exports = source => {

    console.log(source);

    return source;

}

在 webpack.config.js 配置 loader, ./loaders/test.js

module: {

    rules: [{

        test: /\.js$/,

        use: [{

            loader: path.resolve('./loaders/test.js'),

            options: { }

            }]

        }]

}

运行 npx webpack, 就可以看到打印出每个 js 文件。 

03 如何调试 loader 

npx webpack 不好调试, 可以运行下面命令进行打包,

node ./node_modules/webpack/bin/webpack.js 

断点调试

node --inspect-brk ./node_modules/webpack/bin/webpack.js 

04 总结 

大家可以在这个基础上开发自己的 loader, 通常需要结合 AST 语法树进行开发。也可以写一些测试,例如 loader 是从上到下的,还是从下到上的,可以自己写 loader 看看效果就清楚了。 

后续有时间我会介绍的。 

相关文章

  • 7 webpack + vue-loader

    vue-loader vue-loader基于webpack webpack+vue-loader

  • 写一个webpack-loader

    都知道webpack的loader,可是你写过一个loader吗?最近有空写了一个webpack-loader,如...

  • webpack4打包css,html

    webpack安装 webpack打包css 安装style-loader css-loader webpack打...

  • webpack

    webpack 唯一功能:打包loader,没有loader,webpack只能打包js,有了loader,可以打...

  • Webpack Loader源码导读之css-loader

    原文地址:Webpack Loader源码导读之css-loader 在上一篇Webpack Loader源码导读...

  • 如何写一个 webpack loader

    本文主要讲如何快速写一个 webpack loader 和如何调试 webpack loader. 01 背景 w...

  • webpack(壹)

    常用webpack 插件 html-webpack-plugin css-loader style-loader...

  • loader初识

    loader 介绍 loader让webpack能够去处理那些非JavaScript文件(webpack自身只理解...

  • 怎么编写一个 webpack loader

    编写 loader 前需要知道 webpack loader 的执行循序?从右到左执行。 为什么 webpack ...

  • Vue Loader 是什么

    Vue Loader 是什么? Vue Loader 是一个 webpack的 loader,它允许你以一种名为单...

网友评论

    本文标题:如何写一个 webpack loader

    本文链接:https://www.haomeiwen.com/subject/htkpgqtx.html