程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 构建工具

    • 初识 Webpack
      • 1. 简介
      • 2. Webpack
        • 2.1 概念
        • 2.2 使用步骤
        • 1. 初始化项目
        • 2. 安装依赖
        • 3. 创建项目结构
        • 4. 编写代码
        • 5. 配置 Webpack
        • 6. 打包代码
      • 3. 实际开发中需要自己配置webpack吗?
    • Webpack 配置详解
    • Webpack 打包发布
    • 在 Vue 项目中配置 Webpack
    • 在 Vue 项目中配置 Vite
  • 构建工具
  • 构建工具
scholar
2024-07-29
目录

初识 Webpack

提示

webpack中文文档:https://www.webpackjs.com/concepts/ (opens new window)

# 1. 简介

  • 当我们习惯了在 Node.js 中编写代码的方式后,再回到前端编写 HTML、CSS、JavaScript 时,会感觉到各种不便。例如,不能放心地使用模块化规范(浏览器兼容性问题),即使可以使用模块化规范,也会面临模块过多时的加载问题。
  • 因此,我们迫切希望有一款工具可以对代码进行打包,将多个模块打包成一个文件。这样一来即解决了兼容性问题,又解决了模块过多的问题。
  • 构建工具就起到了这样的作用,通过构建工具可以将使用 ESM 规范编写的代码转换为旧的 JavaScript 语法,这样可以使得所有的浏览器都可以支持代码。

# 2. Webpack

# 2.1 概念

本质上,Webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 Webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图(dependency graph) (opens new window),然后将项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示内容。【按需打包】

Webpack 在 Node.js 中运行

# 2.2 使用步骤

# 1. 初始化项目

  • 首先,我们需要初始化一个新的 Node.js 项目。打开终端并在项目目录中运行以下命令:
yarn init -y
1
  • 该命令会创建一个默认的 package.json 文件,-y 标志表示接受所有默认选项。

# 2. 安装依赖

  • 接下来,我们需要安装 Webpack 和 Webpack CLI。这两个包分别用于打包和命令行操作。在终端中运行以下命令:
yarn add -D webpack webpack-cli
1
  • -D 表示将这些包作为开发依赖添加到项目中。

# 3. 创建项目结构

  • 在项目根目录下创建一个名为 src 的文件夹,然后在 src 文件夹中创建一个 index.js 文件。这个文件将作为项目的入口文件。

  • 你的项目结构应该如下所示:

my-project/
├── src/
│   └── index.js
├── package.json
└── yarn.lock
1
2
3
4
5

# 4. 编写代码

  • 在 src/index.js 文件中编写一些简单的 JavaScript 代码,例如:
console.log("Hello, Webpack!");
1

# 5. 配置 Webpack

  • 在项目根目录下创建一个名为 webpack.config.js 的文件。这是 Webpack 的配置文件,我们将在其中定义打包规则。

  • 配置文件的基本内容如下:

// 1. 引入 Node.js 的路径模块,用于处理和转换文件路径
const path = require("path");

// 2. 导出 webpack 的配置对象
module.exports = {
    // 2.1 配置 webpack 的打包模式,这里设置为生产模式
    mode: "production", 
    
    // 2.2 配置入口文件,即 webpack 开始构建依赖图的文件
    entry: "./src/index.js",
    
    // 2.3 配置输出文件,即打包后的文件存放位置
    output: {
        // 2.3.1 指定打包后的文件存放目录,使用 path.resolve 将相对路径转换为绝对路径
        path: path.resolve(__dirname, "dist"),
        // 2.3.2 指定打包后的文件名
        filename: "bundle.js"
    }, 
    
    // 2.4 配置模块处理规则
    module: {
        // 2.4.1 配置不同类型文件的处理规则
        rules: [
            {
                // 2.4.1.1 匹配所有以 .css 结尾的文件,正则表达式中的 \\. 表示转义字符
                test: /\.css$/i,
                // 2.4.1.2 使用的 loader,先使用 css-loader 解析 CSS 文件,然后使用 style-loader 将 CSS 插入到 DOM 中
                use: ["style-loader", "css-loader"]
            }
        ]
    }
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  • 配置文件中,我们定义了 entry 和 output,分别指定了入口文件和输出文件的位置。此外,还配置了一个简单的模块规则,用于处理 CSS 文件。

# 6. 打包代码

  • 现在我们可以使用 Webpack 对代码进行打包了。在终端中运行以下命令:
yarn webpack
1
  • Webpack 会根据配置文件中的规则对代码进行打包,并将结果输出到 dist 文件夹中。打包后的文件名为 bundle.js。

# 3. 实际开发中需要自己配置webpack吗?

image-20240729160707083

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
Webpack 配置详解

Webpack 配置详解→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式