前端构建工具大盘点:gulp、webpack、vite、rollup、esbuild、snowpack、babel、parcel、swc、tsc

article/2025/11/4 3:22:27

文章目录

    • 背景
    • 分类
      • 转译器
      • 打包器
    • 对比
      • gulp VS webpack
      • Bundle vs Bundleless(代表就是webpack VS vite)
      • 其他比较
    • 个人理解总结
    • 官网

背景

做前端也有好多年了,从最早的 jQuery 时代到现在的三大框架,这过程中用到了很多构建工具,今天就来盘点一下我们前端开发常用的这些构建工具。

盘点之前呢,我们先聊聊现代前端开发的痛点,也是这些构建工具出现的原因:

  • 开发过程注重速度、配置复杂度
  • 线上部署注重体积

分类

我们根据功能将这些工具分为两种:
转译器:将一门高级语音转译为另一种高级语言,如 ts 转译为 js、es6 转译为 es5 等等。
打包器:将项目中的各种文件如png、sass、json 等等打包成想要的结果。

转译器:babel、esbuild、swc、tsc
打包器:gulp、webpack、vite、rollup、esbuild、snowpack、parcel

转译器

转译器再分类:
用js/ts实现的:babel、tsc
其他语言实现的:esbuild(go)、swc(rust)

这里的区别主要是性能,其他语言实现的性能会高一些,比如 esbuild 官网就号称速度比其他工具高这么多
在这里插入图片描述

打包器

也可以分为两类:
一类是通过监听源代码变化然后重新构建项目将打包后的代码推送到浏览器的传统模式。如 Webpack、rollup、parcel
另一类是通过浏览器的原生 module 来实现动态打包的 bundleless 模式。如:vite、snowpack

对比

gulp VS webpack

其实平常开发就能明显感觉到,现在这个时代,webpack 比 gulp 使用的频率更高了,但其实并不是 webpack 比 gulp 厉害,而是他们偏向的应用场景不一样,gulp 更偏向将开发流程中让人痛苦或耗时的任务自动化,从而减少你所浪费的时间。而webpack 更侧重于模块化打包,也就是官网的那张图,将所有依赖的 js、less、png 等等打包为最终需要的模块。

所以在 jQuery 的时代,更多的是用 gulp,做代码压缩之类的事情。
在现在的 SPA 单页面应用的时代,更多使用 webpack,对不同的模块进行打包,并且通过 plugin 也能实现压缩等功能。

虽然在一些功能上确实有重复,比如:文件合并、压缩、less/sass编译等等,但是对于 gulp 来说模块化不是他强调的东西,他旨在规范前端开发流程。而 webpack 更是明显强调模块化开发,而那些文件压缩合并、预处理等功能,不过是他附带的功能。

gulp 强调的是前端开发的工作流程,通过配置一系列的task,定义执行顺序,来让gulp执行,从而构建项目的整个前端开发流程。
webpack是一个前端模块化方案,更侧重模块打包,我们可以把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。

gulp 时代没有模块化是依赖 RequireJS、SeaJS 的

Bundle vs Bundleless(代表就是webpack VS vite)

传统的 webpack 等工具会把代码打包成 Bundle 文件,而 vite 则是依赖原生的 ESM 来实现的,虽然在生产环境仍然要打包。

为什么 vite 生产环境要打包?
尽管原生 ESM 现在得到了广泛支持,但由于嵌套导入会导致额外的网络往返,在生产环境中发布未打包的 ESM 仍然效率低下(即使使用 HTTP/2)。为了在生产环境中获得最佳的加载性能,最好还是将代码进行 tree-shaking、懒加载和 chunk 分割(以获得更好的缓存)。

在过去我们一般都会使用Webpack这个打包构建工具来打包构建我们的代码,那为什么过去需要打包,简单来说就是一下几点:

  • HTTP/1.1 各浏览器有并行连接限制
  • 浏览器不支持模块系统(如 CommonJS 包不能直接在浏览器运行)
  • 代码依赖关系与顺序管理

为什么开始尝试不打包

  • 随着项目不断变大,启动和热更新所等待的时间越来越长
  • HTTP/2.0 多路并用
  • 各大浏览器逐一支持 ESM
  • 原生的解决了代码依赖和复用的问题
  • 越来越多的 npm 包拥抱 ESM(尽管很多包的依赖并不是)
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

其他比较

Rollup 通常用来打包第三方库,vite 在生产环境打包也使用的 rollup,在预购建依赖的时候使用 esbuild。

Parcel 和 Webpack 的功能类似,但是它简化了配置,号称零配置、开箱即用。
Parcel 2 的 JS 转译器部分基于 SWC 进行开发,性能有很大提升。

Snowpack 是最早的 bundleless 打包器之一,它最大的特点就是闪电般的速度,但是生态不行。

个人理解总结

可以看到,未来有两个趋势:

  • 一个基于 ESM 实现的 bundleless 模式。
  • 一个是基于其他语言实现的打包器。

都使得前端开发速度更快,JavaScript 和我一样诞生于1996,在这短短几年的时间,发展的如此迅速,各类开发工具日新月异、欣欣向荣,希望未来这个行业能越来越好!!

官网

gulp:https://www.gulpjs.com.cn/
webpack:https://webpack.docschina.org/
vite:https://vitejs.cn/
rollup:https://www.rollupjs.com/
esbuild:https://esbuild.github.io/
snowpack:https://www.snowpack.dev/
babel:https://www.babeljs.cn/
parcel:https://parceljs.org/
swc:https://swc.rs/
tsc:https://www.typescriptlang.org/ 只要下载了 typescript 就可以使用该命令 npm i typescript -g tsc index.ts


http://chatgpt.dhexx.cn/article/uPse8xJQ.shtml

相关文章

前端程序员常用的9大构建工具

构建工具是一个把源代码生成可执行应用程序的过程自动化的程序(例如Android app生成apk)。构建包括编译、连接跟把代码打包成可用的或可执行的形式。 在小型项目中,开发者往往手动调用构建过程,这样在大型的项目中很不实用,在构建过程中难以跟…

Git入门指南二:初次运行Git前的配置

Git入门指南二:初次运行 Git 前的配置 初次运行 Git 前的配置 Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量,正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。 这些变量可以存放在以下三个…

Linux下使用Git入门

什么是版本控制 简单理解就是把文件每次的修改都记录下来,包括最初的一个版本。 在gitee上创建一个仓库 这样仓库就创建好了 gitclone 把仓库克隆到本地目录下 先选择一个目录来存放我们的仓库目录 然后把这个仓库的路径给复制上 在对应的目录下输入指令git …

Git入门级教程(轻松上手)

Git入门以及在Idea中集成使用Git 前言:当我们在团队开发的时候,我们需要一个工具来协同进行项目的完成,这个工具就是git。此博客内容是自己学习的笔记,我认为知道这些便可以轻松使用git了。 Git就是一种分布式版本控制系统 1.安装…

Git入门学习教程

Git学习 文章目录 Git学习1.简介2.工作流程图3.安装3.1 常用指令 4.环境配置4.1 查看配置4.2 配置用户名(必须)和邮箱 5.创建仓库6.基础操作指令6.1 查看状态(status)6.2 添加工作区到暂存区(add)6.3 提交暂…

【Git从入门到精通】Git入门

什么是版本控制 版本控制是一套系统,按时间记录某一个或一系列文件的变更,查看以前的特定版本。 使用版本控制系统,你可以将文件或者整个项目恢复到先前的状态,还可以对以前的文件进行对比。 本地版本控制系统 本地版本控制系…

Git入门看这一篇就够了

老规矩,在学习前我们先看一下学习框架: Tip: Git分支内容较多就放在另一篇文章中啦 目录 Git起步——版本控制 版本控制软件 版本控制软件的好处 版本控制软件的分类 Git基础 Git基础 Git中的三个区域 Git中的三种状态 基本的Git工作流程 安装…

Git入门级教程

文章目录 一.Git概述?1.什么是Git?2.通过git我们可以:3.Git工作流程图4.工作区、暂存区、版本库 概念5.Git的下载与安装6.Git代码托管服务 二.Git常用命令1.Git全局设置2.获取Git仓库:4.本地仓库操作常用命令5.远程仓库操作的常用命令5.1配置SSH钥6.分…

Git入门起步

一、关于版本控制 1.1、概念 版本控制软件:是一个用来记录文件变化,以便将来查阅特定版本修订情况的系统,因此有时也叫做“版本控制系统” 通俗的理解:把手工管理文件版本的方式,改为由软件管理文件的版本&#xff1b…

git新手入门教程

git在日常开发是经常用到的工具,也是程序员必备的技能之一。下面是一篇git的新手快速入门。 git的下载地址:https://www.git-scm.com/download/ 上面是一张简易的git流程图,下面讲讲git操作的基本命令行。 git clone $ git clone 地址 …

Git入门到精通全套教程

[声明:此文章为观看尚硅谷系列课程后本人手打整理课件] 第一章 Git概述 git是一个免费,且开源的分布式版本控制系统,可以快速高效地处理从小到大的各种项目 git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域…

git 入门

git入门 一、下载安装 git官网地址Git - Downloads 二、提交仓库 1. 用户配置 $ git config --global user.name "Your Name" $ git config --global user.email "emailexample.com"name与"有空格 2. 创建文件夹,查看当前地址,创建仓库 $ m…

Git入门操作

Git简介 Git分有工作区,暂存区,本地库 Git具体命令 1. 初始化 命令: git init首先新建一个文件夹,把他当作我们要用git来管理的一个项目文件。右键点击GitBashHere 会弹出一个命令框,我们执行git init 这代表我…

git入门(必看)

git入门 git简介 文章目录 git入门git简介版本控制系统发展可以分为三个阶段: Git 的诞生Git 诞生的背景Linus 两周完成 GitGit 的发展壮大 git安装在 Windows 上安装在 macOS 上安装在 Linux 上安装 Git环境配置配置用户名和邮件地址检查配置Git 颜色配置Git忽略文…

git快速入门

背景 git作为现在最为流行的版本管理系统,大部分公司都使用git进行版本控制,并且最大同性交友网站github也是在git的基础上建立的。 很多人认为git难,在于它的一些概念与之前流行的集中化的版本管理系统有所出入,只要通过熟悉gi…

Git从入门到精通

集中式与分布式中心服务器工作流分支实现冲突Fast forward分支管理策略储藏(Stashing)SSH 传输设置.gitignore 文件Git 命令一览参考资料 # 集中式与分布式 Git 属于分布式版本控制系统,而 SVN 属于集中式。 集中式版本控制只有中心服务器拥…

Git快速入门(图文教程)

前言: Git是目前最流行的版本控制工具之一,它可以帮助我们更好地管理代码,协作开发,以及保证代码的安全性。在学习Git之前,我们需要先了解几个概念: workspace:工作区,即我们正在进…

史上最简单的Git入门教程

1. 版本控制系统简介 1.1 何为版本控制 版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了已录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发…

Git入门

目录 一、准备工作 1.安装Git 二、git简介 1.Git是什么? Git是一个开源的【分布式】【版本控制系统】,用于敏捷高效地处理任何或小或大的项目 2.Git与SVN区别(重点1/2/3/7点) 3.实践操作:Gitee网站相关操作 3.1 …

程序员必备技能篇:Git入门到精通

前言❤️ 所有美好,都不负归期,选一种姿态让自己活得无可替代,没有所谓的运气只有绝对的努力 ❤️ 程序员必备技能篇:Git入门到精通 一、Git 起步篇(1)关于版本控制1.1 什么是版本控制1.2 版本控制软件1.2.…