返回

融汇贯通,从图片、html、js到webpack基础其他配置全面指南

前端

探索 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'),
    }),
  ],
};

工作模式

  • 开发模式: 自动编译、实时刷新。
  • 生产模式: 压缩优化代码、提高性能。

构建流程

  1. 读取配置文件。
  2. 编译生成中间文件。
  3. 进一步处理生成输出文件。
  4. 输出到指定目录。

Loader 与 Plugin

  • Loader: 处理源代码。
  • Plugin: 处理构建过程。

常见问题解答

  1. 如何使用 webpack 处理 HTML 文件? 使用 html-webpack-plugin。
  2. 如何将环境变量注入代码中? 使用 DefinePlugin。
  3. webpack 有哪些工作模式? 开发模式和生产模式。
  4. Loader 和 Plugin 有什么区别? Loader 处理源代码,Plugin 处理构建过程。
  5. 如何配置 webpack 处理不同类型的资源? 通过在 module.rules 中添加相应的配置。