一、前端构建工具的演进
1.基础工具
a.文件压缩与合并工具
随着CSS 与 JS 框架的诞生,代码优化的工具也应运而生。文件压缩工具和合并工具。
b.包管理工具
yarn的优点
- 安装速度:由于 Yarn 在安装依赖时采用的是并行操作,以及它在缓存依赖包时相比 npm 缓存的数据更完整。
- 稳定性:npm 5 引入的 package-lock 文件,在每次执行 npm install 时仍然会检查更新符合语义规则的依赖包版本,而 yarn.lock 则会严格保证版本的稳定性(尽管,yarn.lock 不能保证 node_modules 的拓扑稳定性)。
- Plug’n’Play(PnP):Yarn 2.0 发布了 PnP的功能(在更早期的 1.12 版本中就已实现)。PnP 方案具有提升项目安装与解析依赖的速度,以及多项目共享缓存(与普通缓存相比,免去了读写 node_modules 的大量 I/O 操作),节省占用空间等优势。
c.任务式构建工具
2012 年,Ben Alman 发布了基于任务的构建工具 Grunt。
2013 年,Eric Schoffstall 发布了流式的构建工具 Gulp。
Grunt 和 Gulp 这两种任务式的构建工具的基本组成包括:核心的处理工具(grunt-cli/gulp-cli)、配置文件(Gruntfile/Gulpfile),以及一系列常用的任务插件(Clean、Watch、Copy、Concat、Uglify、CssMin、Spritesmith……)2. 模块化:模块定义与模块化的构建工具
a.模块化的不同规范
CommonJS:
CommonJS 的 Modules/1.0 规范从一开始就注定了只能用于服务端,不能用于浏览器端。
CommonJS 作为非浏览器端的 JS 规范,它的基本要素如下:
