简称 da
,对前端静态资源进行 Minify, Revisioning 以及 Uploading
-
Minify —— 使用了 min-asset 模块,支持对常见的静态资源压缩
js
: 使用了 uglify-js 模块 来压缩css
: 使用了 clean-css 模块 来压缩html
: 使用了 html-minifier 模块 来压缩json
: 使用了 原生函数 JSON.stringify 来压缩image
: 使用了 imagemin 模块 来压缩
-
Revisioning —— 修订,即对静态资源的文件名打上 hash,并替换它在原文件中的引用
类似于 grunt-rev, gulp-rev, gulp-rev-all 和 webpack 对文件名进行 hash 的功能
关于 “为什么要对文件打 hash ” 请参考 fouber 写的 《大公司里怎样开发和部署前端代码》
Revisioning 分两种情况:(关于两者有什么区别,可以参考这里)
- 先计算文件内容的 hash,再替换文件中的静态资源 (在
da
中可以通过指定hashSource=local
来实现) - 先替换文件中的静态资源,再计算文件内容的 hash (在
da
中可以通过指定hashSource=remote
来实现)
- 先计算文件内容的 hash,再替换文件中的静态资源 (在
-
Uploading —— 当前支持上传到下面的服务器上
- 七牛: 使用了七牛官方提供的 qiniu 模块 来上传文件
- FTP: 使用了开源的 ftp 模块 来上传文件
- 又拍云: 使用了又拍云官方提供的 upyun 模块 来上传文件
- Github: 使用了开源的 github-api 模块 来上传文件,注意:此模块每上传一个文件,都是一次 commit 操作,所以如果上传大量文件,会非常慢,甚至出错
另外,也可以很容易扩展自己的 Uploader,参考这里
- HTML 放在后端,CSS/JS 放在静态服务器上,同时 CSS 中的图片也能放到静态服务器上,但 HTML 中的图片放哪?
如果放静态服务器,但测试服务器和线上服务器的地址不一样,必然会引起在发布代码时更新 HTML 中图片的域名, 这样就需要后端提供一个可配置域名的服务!
如果放到动态服务器,这样图片地址就需要换成相对于动态服务器的地址
- 自动合拼图片(用在此工具上有点困难)
- 有空了可以自己写个 ftp 模块,正好学习下 node 的 socket 编程
- 最好重写下 ServerEnv 这一块的东西
- update-notifier - Update notifications for your CLI app.
- uploader 可以指定在上传完后才生成远程链接,这样就强制 concurrency 为 1 了
- CLI-MD
- CLI-TO-MD: 将 yargs 产生的 help 信息生成 markdown (HERE_DOC)
- MD-TO-CLI: 用 markdown 来产生 yargs 的 help 信息 (HERE_DOC)
Copyright (c) 2015 Zhonglei Qiu. Licensed under the MIT license.