Open yang-xianzhu opened 1 year ago
1、介绍
官方介绍:loader用于对模块的源代码进行转换。loader可以使你在import或load(加载)模块时预处理文件。因此,loader类似于其他构建工具中任务task,并提供了处理前端构建步骤的得力方式。loader可以将文件从不同的语言(如TypeScript)转换为JavaScript或将内联图像转换为data URL。loader甚至允许你直接在JavaScirpt模块中importCSS文件。
loader
import
load(加载)
任务task
2、特性
options
package.json
main
可以通过loader的预处理函数,为JavaScript生态系统提供更多能力。用户现在可以更加灵活地引入细粒度逻辑,例如:压缩、打包、语言转换(或者编译)等。
插件 是 webpack 的 [支柱](https://github.com/webpack/tapable) 功能。Webpack 自身也是构建于你在 webpack 配置中用到的 相同的插件系统 之上!
插件(plugin)的目的在于解决loader无法实现的其他事。
webapck插件是一个具有apply方法的JavaScript对象。apply方法会被webpack compiler调用,并且在整个编译生命周期都可以访问compiler对象。
apply
生命周期
compiler
实现一个自己的plugin:
const pluginName = 'ConsoleLogOnBuildWebpackPlugin'; class ConsoleLogOnBuildWebpackPlugin { apply(compiler) { compiler.hooks.run.tap(pluginName, (compilation) => { console.log('webpack 构建正在启动!'); }); } } module.exports = ConsoleLogOnBuildWebpackPlugin;
compiler hook 的 tap 方法的第一个参数,应该是驼峰式命名的插件名称。建议为此使用一个常量,以便它可以在所有 hook 中重复使用。
loader
1、介绍
官方介绍:
loader
用于对模块的源代码进行转换。loader可以使你在import
或load(加载)
模块时预处理文件。因此,loader类似于其他构建工具中任务task
,并提供了处理前端构建步骤的得力方式。loader可以将文件从不同的语言(如TypeScript)转换为JavaScript或将内联图像转换为data URL。loader甚至允许你直接在JavaScirpt模块中import
CSS文件。2、特性
options
对象配置。package.json
的main
来讲一个npm模块导出为loader,还可以在module.rules中使用loader
字段直接引用一个模块。可以通过loader的预处理函数,为JavaScript生态系统提供更多能力。用户现在可以更加灵活地引入细粒度逻辑,例如:压缩、打包、语言转换(或者编译)等。
plugin
插件 是 webpack 的 [支柱](https://github.com/webpack/tapable) 功能。Webpack 自身也是构建于你在 webpack 配置中用到的 相同的插件系统 之上!
插件(plugin)的目的在于解决
loader
无法实现的其他事。webapck插件是一个具有
apply
方法的JavaScript对象。apply
方法会被webpack compiler调用,并且在整个编译生命周期
都可以访问compiler
对象。实现一个自己的plugin:
compiler hook 的 tap 方法的第一个参数,应该是驼峰式命名的插件名称。建议为此使用一个常量,以便它可以在所有 hook 中重复使用。