前言
通过 官网构建优化流程(2) - 旧版grunt打包构建流程 可以知道grunt打包构建的流程。
本篇主要是把之前官网的grunt构建换成扩展更好,可读性更强,速度更快的gulp构建。
目录结构如下:
当然还有一个就是 gulpfile.js 这边截图没有看到,其实这个文件很简单,就是引用上面的 gulp 目录, 其实就是 require gulp/index.js 这个文件。
具体 gulpfile.js :
1 | ; |
没错,就是这么简单,所以接下来就分析 gulp 目录下的 gulp/index.js。
分析任务
index.js
直接看头文件 gulp/index.js:
1 | ; |
主要确认了一个当前打包的版本号,一个是打包过程中,所用的一些配置文件,即 config.js
config.js
1 | ; |
主要是一些目录和文件的配置, 即各个目录的位置。 而接下来的 gulp/tasks 目录下的各个文件就是一些gulp的任务。
其中一般打包的执行任务就是下面几个:
不同环境打包任务
测试环境模式
test.js => gulp d 即测试环境模式
1 | ; |
测试环境模式,并且上传到测试服务器并解压到对应目录
test_upload.js => gulp du 即测试环境模式,并且上传到测试服务器并解压到对应目录
1 | ; |
正式环境模式
release.js => gulp r 即正式环境模式
1 | ; |
正式环境模式,但是域名有变,即预发布环境
test_release.js => gulp n 即正式环境模式,但是域名有变,即预发布环境(测试服务器上的域名
1 | ; |
正式环境模式,即预发布环境, 并上传到测试服务器并解压到对应目录
test_release_upload.js => gulp nu 即正式环境模式,即预发布环境, 并上传到测试服务器并解压到对应目录
1 | ; |
构建完之后的任务
以上这5个任务,除了打包时的处理build任务,之外,还有3个任务是打包后的逻辑
打包目录打成zip包
将打包目录打成zip包, 即 gulp zip
1 | ; |
将zip上传到对应的服务器
将打成的zip,上传到对应的服务器 gulp upload
1 | ; |
将zip包解压缩到指定的目录 shell 任务
最后是将上传到服务器的zip包进行解压缩到指定的目录 shell 任务 gulp shell
1 | ; |
就执行两个指令,一个是定位到对应目录的history目录,然后解压对应的zip包到上级目录。
其中-o指令是忽略提示直接覆盖文件, -d 是指定要解压后的目录,这里就是上级目录 ..
而且 scp.auth.js 是关于服务器权限的认证文件,大约长这样:
1 | var fs = require('fs'); |
真正负责打包的build任务
真正打包的处理任务是 build 任务: tasks/build.js
1 | ; |
上面有八个任务,即把打包分成8个步骤:
1 clean 任务,即先清理上次打包的残渣
tasks/clean.js:
1 | ; |
2 less 任务,即将workspace里面的less编译成css
tasks/less.js:
1 | ; |
3 lang 任务,语言文件处理
即将workspace里面的lang目录放到build/
1 | ; |
4 img 任务,图片处理
即将workspace里面的img目录放到build/
1 | ; |
5 useref 任务,针对html进行处理
即对html文件引用的js和css进行压缩和合并(相当于grunt打包的usemin,不过更强大), tasks/useref.js:
1 | ; |
6 tpl 任务,针对模板处理
先把html模板编译成 jst 模板,然后读取js,将jst模板的内容合并到js文件的前面, tasks/tpl.js:
1 | ; |
7 html 任务,针对html文件进行处理
加上版本号和绝对地址,修改打包后的模板地址,和语言包的路径, tasks/html.js:
1 | ; |
8 i18n任务,主要是多语言静态化页面编译
tasks/i18n.js:
1 | ; |
总结
所以大概改成 gulp 构建之后就是这样了,后面测试了一下,无论是整个结构还是打包的速度,都比grunt构建还要快,而且更容易维护,因为他是一个一个任务分开的,不像grunt那样全部写在一块。每次看代码,都要找半天。
当然,这个虽然已经可以work了,并且测了一下,可以正常打包,并且会自动上传到服务器,并进行解压覆盖了,看起来非常完美 o( ̄︶ ̄)o
1 | [14:25:44] Starting 'd'... |
系列文章
官网构建优化流程(1) - 简介
官网构建优化流程(2) - 旧版grunt打包构建流程
官网构建优化流程(3) - grunt静态页面预编译插件 grunt-staticfy
官网构建优化流程(4) - gulp 静态页面预编译插件 gulp-staticfy
官网构建优化流程(5) - gulp jst模板联合组件 gulp-concat-js
官网构建优化流程(6) - 把原先的grunt换成gulp构建
官网构建优化流程(7) - 官网的多语言跳转规则
官网构建优化流程(8) - gulp打包构建在ie8会报错
官网构建优化流程(9) - windows 下打zip包到服务器没有执行权限的问题
官网构建优化流程(10) - gulp-staticfy进行多语言预编译的时候,会随机出现乱码
官网构建优化流程(11) - 部署转为用Jenkins自动化部署
官网构建优化流程(12) - 优化加载速度,资源分开存放
官网构建优化流程(13) - 字体文件的跨域问题 和 S3/CloudFront/COS 设置跨域CORS