Webpack 的 Plugin 和 Loader 是用来处理模块和资源的两个不同的概念。
- Loader 是Webpack 的模块转换器,用于将某种特定格式的内容转换为Webpack 可以处理的模块。它可以在构建流程中将各种类型的文件(如 CSS、图片、ES6、TypeScript 等)转换成 JavaScript 模块的形式,并且可以链式调用多个 loader 进行处理。
- Plugin 是Webpack 的插件机制,用于在构建时执行一些自定义操作,如压缩代码、处理文件、生成 HTML 等。它通过读取 webpack 的 Compiler 实例或 Compilation 实例来获取构建过程中的信息,可以通过 Webpack 提供的生命周期钩子来执行特定的任务。
总的来说,Plugin 是基于整个构建过程,能够访问到整个 Compilation 或者 Compiler 对象,而Loader 则对每个文件进行转换处理。Plugin 是用于改变构建流程的,而 Loader 用于转换模块的内容。