1. Loader
Loader 用于对模块的源代码进行转换。它可以将非 JavaScript 文件(如 CSS、图片、字体等)转换为 webpack 能够处理的模块。
常用 Loader 及其作用
Loader | 作用 |
---|---|
babel-loader |
将 ES6+ 代码转换为 ES5,兼容旧版浏览器。 |
css-loader |
解析 CSS 文件,处理 @import 和 url() 等语法。 |
style-loader |
将 CSS 插入到 DOM 中,通过 <style> 标签生效。 |
sass-loader |
将 SCSS/SASS 文件编译为 CSS。 |
file-loader |
处理文件(如图片、字体),将其输出到构建目录并返回文件路径。 |
url-loader |
类似于 file-loader ,但可以将小文件转换为 Base64 URL,减少 HTTP 请求。 |
ts-loader |
将 TypeScript 编译为 JavaScript。 |
module.exports = { module: { rules: [ { test: /\.js$/, // 匹配 .js 文件 exclude: /node_modules/, // 排除 node_modules 目录 use: 'babel-loader', // 使用 babel-loader }, { test: /\.css$/, // 匹配 .css 文件 use: ['style-loader', 'css-loader'], // 从右到左执行 }, { test: /\.(png|jpe?g|gif|svg)$/, // 匹配图片文件 use: [ { loader: 'url-loader', options: { limit: 8192, // 小于 8KB 的文件转换为 Base64 URL name: 'images/[name].[hash:8].[ext]', // 输出路径和文件名 }, }, ], }, ], }, };
2. Plugin
Plugin 用于扩展 webpack 的功能,可以在打包过程的各个阶段执行自定义操作。与 Loader 不同,Plugin 的功能范围更广,比如优化资源、管理环境变量、注入全局变量等。
常用 Plugin 及其作用
Plugin | 作用 |
---|---|
HtmlWebpackPlugin |
自动生成 HTML 文件,并自动注入打包后的资源(如 JS、CSS)。 |
MiniCssExtractPlugin |
将 CSS 提取为单独的文件,而不是嵌入到 JS 中。 |
CleanWebpackPlugin |
在每次构建前清理输出目录,避免旧文件残留。 |
DefinePlugin |
定义全局常量,通常用于区分开发环境和生产环境。 |
CopyWebpackPlugin |
复制静态文件(如图片、字体)到输出目录。 |
HotModuleReplacementPlugin |
启用模块热替换(HMR),在不刷新页面的情况下更新模块。 |
OptimizeCSSAssetsPlugin |
压缩和优化 CSS 文件。 |
TerserWebpackPlugin |
压缩和优化 JavaScript 文件。 |
const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const webpack = require('webpack'); module.exports = { plugins: [ new HtmlWebpackPlugin({ template: './src/index.html', // 指定 HTML 模板 filename: 'index.html', // 输出的 HTML 文件名 }), new MiniCssExtractPlugin({ filename: 'css/[name].[contenthash:8].css', // 提取 CSS 到单独文件 }), new CleanWebpackPlugin(), // 清理输出目录 new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production'), // 定义环境变量 }), ], };
3. 其他常用配置
1) entry
指定打包的入口文件。
module.exports = { entry: './src/index.js', // 单入口 // 多入口 entry: { app: './src/app.js', admin: './src/admin.js', }, };
2) output
指定打包后的文件输出位置和文件名。
module.exports = { output: { path: path.resolve(__dirname, 'dist'), // 输出目录 filename: 'js/[name].[contenthash:8].js', // 输出文件名 publicPath: '/', // 公共路径(用于 CDN) }, };
3) mode
设置打包模式,可选 development
、production
或 none
。
module.exports = { mode: 'production', // 生产模式(默认启用代码压缩) };
4) devServer
配置开发服务器,支持热更新、代理等功能。
module.exports = { devServer: { contentBase: './dist', // 服务内容目录 hot: true, // 启用热更新 port: 8080, // 端口号 proxy: { '/api': 'http://localhost:3000', // 代理 API 请求 }, }, };
5) optimization
配置代码分割和压缩优化。
module.exports = { optimization: { splitChunks: { chunks: 'all', // 代码分割 }, minimizer: [ new TerserWebpackPlugin(), // 压缩 JS new OptimizeCSSAssetsPlugin(), // 压缩 CSS ], }, };
4. 总结
-
Loader:用于处理特定类型的文件(如 CSS、图片、字体等),将其转换为 webpack 能够处理的模块。
-
Plugin:用于扩展 webpack 的功能,如生成 HTML 文件、提取 CSS、压缩代码等。
-
常用配置:
entry
、output
、mode
、devServer
、optimization
等。
到此这篇关于前端webpack一些常用配置的作用的文章就介绍到这了,更多相关前端webpack常用配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源链接:https://www.jb51.net/javascript/339202lpl.htm
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容