Loader
Loader是文件加载器,它用于对模块的源代码进行转换。Webpack 本身只理解JavaScript,loader 让它能够处理其他类型的文件,并将它们转换为有效的模块,从而能够添加到依赖图中。
- 作用: 在Webpack打包之前对模块进行预处理,如将Sass转换为CSS,将TypeScript转换为JavaScript等。
- 用法: 在Webpack的配置文件(通常是
webpack.config.js)中的module.rules数组里指定。 - 示例: 使用
sass-loader将Sass文件转换为CSS。
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
}
]
}
};
Plugin
Plugin是插件,它用于扩展Webpack的功能。插件可以介入到Webpack的整个编译过程,监听并改变Webpack内部实例的生命周期事件,执行广泛的任务,比如打包优化、资源管理和环境变量注入等。
- 作用: 在Webpack构建生命周期的特定时刻注入钩子,执行广泛的任务,比如打包优化、资源管理和环境变量注入等。
- 用法: 在Webpack配置对象中的
plugins数组里实例化并添加。 - 示例: 使用
HtmlWebpackPlugin自动生成HTML文件,并将打包后的资源注入到HTML中。
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
})
]
};
区别
- 功能不同: Loader负责转换某些类型的模块,而Plugin则可以执行更广泛的任务,比如打包优化、资源管理和环境变量注入等。
- 使用方式不同: Loader在
module.rules中配置,Plugin在plugins中配置。 - 运行时机不同: Loader在模块被加载时执行,Plugin在整个编译周期中特定时刻执行。