0
点赞
收藏
分享

微信扫一扫

webpack原理篇(五十九):loader 的链式调用与执行顺序


说明

玩转 webpack 学习笔记

一个最简单的 loader 代码结构

定义:loader 只是一个导出为函数的 JavaScript 模块。

module.exports = function(source) {
return source;
};

多 Loader 时的执行顺序

多个 Loader 串行执行顺序从后到前

module.exports = {
entry: './src/index.js', output: {
filename: 'bundle.js', path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.less$/,
use: [
'style-loader',
'css-loader',
'less-loader'
]
}
]
}
};

函数组合的两种情况

  • Unix 中的 pipline(从左往右)
  • Compose(webpack 采取的是这种:从右往左)

compose = (f,) => (...args) => f(g(...args));

通过一个例子验证 loader 的执行顺序

​a-loader.js​​:

module.exports = function(source) {
console.log ('loader a is executed');
return source;
};

​b-loader.js​​:

module.exports = function(source) {
console.log ('loader b is executed');
return source;
};

实战 loader 的顺序

1、新建初始化项目

新建文件夹 loader-order,然后执行初始化命令

npm

webpack原理篇(五十九):loader 的链式调用与执行顺序_执行顺序

2、安装 webpack webpack-cli

npm

webpack原理篇(五十九):loader 的链式调用与执行顺序_执行顺序_02

3、添加 webpack.config.js 配置文件

新建 ​​webpack.config.js​​ 添加下面配置:

const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.join(__dirname, 'dist'),
filename: 'main.js'
},
module: {
rules: [
{
test: /\.js$/,
use: [
path.resolve('./loaders/a-loader.js'),
path.resolve('./loaders/b-loader.js')
]
}
]
}
}

4、添加两个 loader 以及 index 文件

结构如下:loader 的代码在上面,这里就不粘贴了

webpack原理篇(五十九):loader 的链式调用与执行顺序_执行顺序_03

5、添加脚本执行

"build": "webpack"

运行 ​​npm run build​​,我们就可以知道顺序是从右往左

webpack原理篇(五十九):loader 的链式调用与执行顺序_执行顺序_04


举报

相关推荐

0 条评论