返回
融汇贯通,从图片、html、js到webpack基础其他配置全面指南
前端
2024-02-14 16:26:27
探索 webpack 的广泛配置:解锁多媒体支持和优化构建流程
图片处理
- file-loader: 直接复制图片,生成 URL 引用。
module.exports = {
module: {
rules: [
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'file-loader',
options: {
outputPath: 'images/',
},
},
],
},
],
},
};
- url-loader: 将图片转换为 base64 编码字符串,嵌入 JavaScript 文件中。
module.exports = {
module: {
rules: [
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192,
},
},
],
},
],
},
};
HTML 处理
- html-webpack-plugin: 自动注入 JavaScript 和 CSS 文件到 HTML 文件中。
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html',
}),
],
};
其他资源处理
- css-loader、style-loader: 处理 CSS 文件。
- file-loader: 处理字体、音频等资源。
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: ['file-loader'],
},
{
test: /\.(mp3|wav|ogg)$/,
use: ['file-loader'],
},
],
},
};
webpack-dev-server
- 开发模式下的热刷新,实时更新页面。
const webpack = require('webpack');
const webpackDevServer = require('webpack-dev-server');
const config = {
// webpack 配置
};
const compiler = webpack(config);
const server = new webpackDevServer(compiler, {
// devserver 配置
});
server.listen(8080, 'localhost', () => {
console.log('Starting the development server on http://localhost:8080');
});
环境配置
- DefinePlugin: 定义环境变量,供代码中使用。
const webpack = require('webpack');
const config = {
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production'),
}),
],
};
工作模式
- 开发模式: 自动编译、实时刷新。
- 生产模式: 压缩优化代码、提高性能。
构建流程
- 读取配置文件。
- 编译生成中间文件。
- 进一步处理生成输出文件。
- 输出到指定目录。
Loader 与 Plugin
- Loader: 处理源代码。
- Plugin: 处理构建过程。
常见问题解答
- 如何使用 webpack 处理 HTML 文件? 使用 html-webpack-plugin。
- 如何将环境变量注入代码中? 使用 DefinePlugin。
- webpack 有哪些工作模式? 开发模式和生产模式。
- Loader 和 Plugin 有什么区别? Loader 处理源代码,Plugin 处理构建过程。
- 如何配置 webpack 处理不同类型的资源? 通过在 module.rules 中添加相应的配置。