JavaScript工程化②|Webpack5基础配置,打包你的第一个项目


author: 专注前端开发,分享JavaScript干货

title: JavaScript工程化②|Webpack5基础配置,打包你的第一个项目
update: 2026-04-28
tags: JavaScript,Webpack,打包,loader,plugin,前端工程化,模块打包

作者:专注前端开发,分享JavaScript干货

更新时间:2026年4月

适合人群:掌握JS基础,想学习前端打包工具的开发者


前言:为什么需要Webpack?

现代前端项目包含:JS、CSS、图片、字体等多种资源。

Webpack 把这些资源都当作模块,打包成浏览器可运行的文件。


一、Webpack 核心概念

概念 说明
Entry 入口文件,Webpack 打包的起点
Output 输出配置,打包后的文件存放位置
Loader 处理非JS文件(CSS、图片等)
Plugin 扩展 Webpack 功能
Mode 打包模式:development 或 production

二、安装与初始化

bash 复制代码
# 1. 初始化项目
mkdir webpack-demo && cd webpack-demo
npm init -y

# 2. 安装 webpack(开发依赖)
npm i -D webpack webpack-cli

# 3. 创建目录结构
mkdir src dist
touch src/index.js src/style.css index.html webpack.config.js

三、基础配置(webpack.config.js)

javascript 复制代码
const path = require('path');

module.exports = {
    // 模式:development / production
    mode: 'development',
    
    // 入口文件
    entry: './src/index.js',
    
    // 输出配置
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js',
        clean: true // 每次打包前清空 dist
    },
    
    // 模块配置(Loader)
    module: {
        rules: [
            // 处理 CSS
            {
                test: /\.css$/i,
                use: ['style-loader', 'css-loader']
            },
            // 处理图片
            {
                test: /\.(png|svg|jpg|jpeg|gif)$/i,
                type: 'asset/resource'
            }
        ]
    },
    
    // 插件配置
    plugins: [
        // HTML 模板插件
        new (require('html-webpack-plugin'))({
            template: './index.html'
        })
    ],
    
    // 开发服务器
    devServer: {
        static: './dist',
        port: 3000,
        open: true
    }
};

四、安装必要的 Loader 和 Plugin

bash 复制代码
# CSS Loader
npm i -D style-loader css-loader

# HTML 插件
npm i -D html-webpack-plugin

# 开发服务器
npm i -D webpack-dev-server

# Babel(处理 ES6+ 语法)
npm i -D babel-loader @babel/core @babel/preset-env

五、Babel 配置(处理 ES6+)

javascript 复制代码
// webpack.config.js 中添加
module.exports = {
    // ... 其他配置
    module: {
        rules: [
            // ES6+ 转 ES5
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env']
                    }
                }
            },
            // CSS...
            // 图片...
        ]
    }
};

六、package.json 脚本

json 复制代码
{
  "scripts": {
    "build": "webpack",
    "dev": "webpack serve"
  }
}
bash 复制代码
# 开发模式(带热更新)
npm run dev

# 生产打包
npm run build

七、知识卡

概念 说明
entry 入口文件
output 输出配置
loader 处理非JS文件
plugin 扩展功能
babel-loader ES6+ 转 ES5
html-webpack-plugin 生成HTML文件
webpack-dev-server 开发服务器

八、课后作业

  1. 配置一个 Webpack 项目,引入 Bootstrap CSS
  2. 添加图片加载器,在项目中使用图片
  3. 配置多入口,打包出两个独立的JS文件

有问题欢迎评论区留言,大家一起讨论!


标签:JavaScript | Webpack | 打包 | loader | plugin | 前端工程化 | 模块打包

相关推荐
中科三方18 分钟前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
沫璃染墨1 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
刚入门的大一新生1 小时前
Linux-线程互斥
java·开发语言
香芋芋圆2 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
小熊恋旧2 小时前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
云边云科技_云网融合2 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
Evand J2 小时前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
will_net3 小时前
apollo 站点部署&C#接入
开发语言·c#·apollo
晗夜未央3 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>4 小时前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc