fis3的工作原理:
fis3是真正地从前端工程化的角度出发,不单单是个打包工具,它基于文件对象进行构建,每个进入fis3的文件都会被实例化为一个file对象,整个构建流程都对这个对象进行操作完成构建任务。fis3没有入口文件的概念,是根据内置打包阶段生成的资源表定义之后的产出规则。
fis3的构建流程:
fis3将构建流程分为了单文件编译和打包两个阶段。单文件编译又分为了lint、parser、preprocessor、standard、postprocessor、optimizer六个阶段。打包分为prepackager、packager、spriter、postpackager四个阶段。
1 | fis.release = function (opt) { |
- 扫描项目目录拿到文件并初始化出一个文件对象列表
- 对文件对象中每一个文件进行单文件编译
- 获取用户设置的package插件,进行打包处理(包括合并图片)
单文件编译处理了六个插件扩展点,通过用户配置启用某些插件:
- lint 代码校验检查,比较特殊,需要release命令命令行添加-l参数
- parser 预处理阶段,比如less、sass、es6、react前端模板等都在此处预编译处理
- preprocessor 标准化前处理插件
- standard 标准化插件,处理内直插件
- postprocessor 标准化后处理插件
- optimizer 代码优化
打包处理了四个扩展点,通过用户配置启用某些插件:
- prepackager 打包前处理插件扩展点
- packager 打包插件扩展点,通过此插件收集文件依赖信息、合并信息产出静态资源映射表
- spriter 图片合并扩展点,如csssprites
- postpackager 打包后处理插件扩展点
fis3的配置文件
通过glob语法match到某些文件,然后对这些文件定义各自的各个阶段的插件处理、发布规则,还能通过media定义不同环境的发布规则。感觉fis3的配置更优雅,可操作性更强。文件在什么阶段使用什么插件在这个阶段发生什么事情都可以很清楚地看到。
1 | /** |
fis3的输出
fis3的打包阶段只搜集所有文件列表以及各种依赖关系,根据打包阶段生成的资源表自定义产出规则。
fis3可以提供假mock数据
fis3提供mock假数据模拟协助前端开发,需要放到服务器的/mock/sample.json目录下,确保通过http://127.0.0.1:8080/mock/sample.json可以访问到
1 | { |
准备一个server.conf配置文件放在服务器的/mock/server.conf目录,内容如下:
1 | rewrite ^\/api\/user$ /mock/sample.json |