除Webpack,其他主流前端构建工具简单浅析

1,005 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

Rollup

Rollup 是一个 JS 模块打包器,它与 Webpack 定位不同,它更专注于 JS 类库的打包工作。操作过程和webpack差不多,它也是可以以命令行或者配置文件(rollup.config.js)的方式来完成打包操作的。默认支持 ES Module 中的 import/export 语法还有相对路径(Webpack中相对路径要配合path模块)。

中文文档
英文文档

Tree-shakingRollup 一个重要特性,Webpack 版本在 2 版本的时候也有这个性质,但是应用还是不是很成熟。

注意点:

1. Rollup 更适合用来开发一些纯 JS 库。
2. Rollup 不支持代码分割。
3. Rollup 默认只支持 import/export 方式导入导出,如需使用 CommonJS 模块规范,则必须单独配置插件。
4. Rollup 不能直接处理导入的第三方依赖模块,需要插件@rollup/plugin-node-resolve 来处理路径才能使用。
5. 开发服务器 Dev Server 需要通过 rollup-plugin-server 插件来实现。

 

Esbuild

Esbuild 是新一代的 JS 打包工具,尤大大最新推出的 Vite 工具内置了它,也在内部很多地方使用了其中的功能(transform),但并没有作为打包使用,而是选择了更加灵活的 Rollup ,主要是它针对的一些构建应用的重要功能仍然还在开发中,如代码分割和CSS处理方面。

英文文档

它现在支持的能力:

  • 支持 CommonJS 模块规范导入导出。
  • 支持 ES Module 模块规范导入导出。
  • 支持 Tree-shaking
  • 压缩代码。
  • 支持 Source Map
  • 支持 JSX 文件转为 JS

Esbuild 快的原因:

  1. 它由 GO 语言编写,GO 语言在编译运行层次上比 JS 更具有性能优势。

  2. GO 语言天生具有多线程能力,能并行处理代码解析工作。

 

Gulp/Grunt

一个基于流(任务)的自动化构建工具,Gulp 是基于 Node 构建的,利用它流的能力,它强调的是前端开发流程规范化管理,从 VueSPA 框架出现后,它慢慢不介入业务的实际生产开发中了。

Gulp中文文档
Gulp英文文档

Grunt中文文档
Grunt英文文档

什么时候用 Gulp/Grunt

如果你的应用模块依赖简单,没有用到模块化的概念,只需要简单的合并压缩,就可以使用。但如果你的整个项目都是用模块化管理的,互相依赖模块很强,建议还是用 Webpack

注意点:

  1. Gulp 所处理的任务大多都是以插件的形式存在的,所以在使用前,要先安装插件依赖。
  2. GruntGulp 的前身,Gulp 及其了它的精华。
  3. Gulp相比 Grunt 更加简洁,设计理念更合理,核心API只有五个。
  4. Gulp 每个插件只完成一个功能。

打包压缩一个 Less 文件的过程,GulpGrunt 的对比:

Gulp:执行 IO 操作,读取 Less 文件,转成 CSS 文件,压缩代码,存储。
Grunt:执行 IO 操作,读取 Less 文件,转成 CSS 文件,存储,再重新读取 CSS 文件,压缩,存储。

 

Parcel

一个极速零配置的 Web 应用打包工具,能支持打包各种文件。

中文文档
英文文档

注意点:

1. 无配置完成构建打包项目要求。
2. 内置常见场景的构建方案及其依赖,无需安装各种依赖。
3. 能以HTML为入口,自动检测和打包依赖资源。
4. 默认支持模块热替换,真正的开箱即用。
5. Transform 过程是通过 Plugins 来处理的,不像 Webpack 是通过Loader

使用场景:

偶尔用来快速启动一个服务进行开发。Parcel 支持Vue3,但尤大大不推荐使用,直接使用 Vite 更好。

主要记住它主打的是零配置模式!!!






至此,本篇文章就写完啦,撒花撒花。

image.png

希望本文对你有所帮助,如有任何疑问,期待你的留言哦。
老样子,点赞+评论=你会了,收藏=你精通了。