前端代码打包工具,适合于前端工作者及小中型开发团体快速构建和发布前端工程。
具体功能:
- 动态脚本 -
JavaScript
代码合并、压缩:JavaScrirpt
动态合并、压缩;CoffeeScript
预编译,并可合并进JavaScript
。
- 样式表 -
CSS
代码合并、压缩:- 基于
LESS
构建的(一种CSS
预处理语言,如果对他不熟悉,那么可以直接写CSS
代码,只是文件扩展名不同罢了); LESS
预编译、动态合并、压缩;Image
图片绝对路径转换;- 自动添加
CSS
兼容性代码
- 基于
- 版本号系统 - 解决开发和线上版本问题:
- 为
html
中的script
和link
所引入的js
和css
文件加上版本号; - 为
css
中的image
加上版本号; - 支持版本号写入页面全局变量。
- 为
- 支持模拟
Ajax
和Jsonp
- 让测试更简单:- 支持
Ajax
的get
请求,并以json
数据格式返回; - 支持
jsonp
请求,并以json
数据格式返回; - 支持读取
*.json
文件数据; - 支持使用自定义的
JavaScript
来处理请求。
- 支持
- 本地服务器 - 不懂后端也能建服务:
- 可切换的服务器环境;
- 动态增添项目,无需重启服务;
- 避免本地开发的种种问题。
- 远程日志 - 在浏览器窗口中显示工具日志信息,用前端技术解决前端问题。
- 可视化UI - 直观、方便、容易操作。
- 兼容系统 - 现兼容MacOS及Window操作系统。
- 基于Node-Webkit编写的可视化前端打包工具,基于nodejs和前端技术。
- 支持JavaScript和CoffeeScript的动态混合打包,及合并压缩。
- 支持LESS预编译,支持动态打包合并,支持代码压缩。
- 支持测试数据模拟,支持Json数据返回,支持请求动态处理,支持Ajax和Jsonp。
- 基于NodeJS搭建服务器,快速搭建本地服务环境。
- 基于Sokcet.io的远程日志输出。
- 使用Node-Webkit-Packager打包。
- 使用UglifyJS对JavaScript代码进行格式化和压缩。
- 使用CoffeeScript编译器进行Coffee预编译。
- 使用Node-Less进行LESS预编译。
- 使用Node-Css-Prefix对Css进行浏览器兼容,如自动添加
-webkit-
、-moz-
前缀等。 - 使用ycssmin对CSS进行压缩。
- 界面基于jQuery,BootStrap v3,jQuery custom content scroller构建的。
约定的目录结构如下:
project
|-- conf
|-- js
`-- css
|-- data
|-- production
`-- src
|-- js
|-- less
src
为源码目录,js
子目录下为JavaScript
或CoffeeScript
源码,less
子目录下为less
源码。conf
为配置目录,js
子目录下为JavaScript
文件打包配置,css
子目录下为css
文件打包配置。production
为产品目录,为打包后的项目代码。data
为模拟数据目录。
- 按照约定目录,建立项目,启动服务后,项目的访问路径为
http://127.0.0.1:端口号(默认8080)/项目名/
。 JavaScript
引入方式是$Import('path/to/file.js')
,如果是CoffeeScript
,那么拓展名为.coffee
,相对路径的root
为src/js/
。(.js
可以省略)Less
使用标准的引入方式,@import "path/to/file"
,相对路径的root
为src/less/
。- 在
DEV
开发环境下,访问项目路径下的js
和css
目录中的文件,会根据conf
配置返回内容,其他文件会直接返回src
下的相应文件。- 例如访问
http://127.0.0.1:8080/example/js/index.js
,那么会根据conf/js/index.js
返回相应内容,如果是index.min.js
,那么会压缩后返回。
- 例如访问
- 在
PD
生产环境下,访问项目路径下的js
和css
目录中的文件,会直接返回production
中的相应文件。 - 如果访问项目路径下的
path/to/name.json
或path/to/name.jsonp
,(先仅支持get请求)- 如果存在
data
目录下的path/to/name.json
文件,则直接返回其中的json
数据。 - 如果存在
data
目录下的path/to/name.js
文件,则会执行此js
中的方法,返回方法return
的object
数据。
- 如果存在
Example1:
// args为请求的参数对象,a、b为请求时所带的参数
function exec(args) {
var a = parseInt(args.a) || 0,
b = parseInt(args.b) || 0;
return {
rs : a + b
};
}
Example2:
//同一个项目会有一个global对象可以操作,可以存取一些数据,模拟相关的逻辑
function exec(args) {
global.value = args.value;
return {
result : true
};
}
/*----------------------------------*/
function exec(args) {
return {
value : global.value || ''
};
}
本项目example
目录下为示例项目。
Beta (0.2.1) 2013-11-05
更新内容:
- 修复已知Bug。
下载地址:
Beta (0.2.0) 2013-10-23
更新内容:
- 增加版本号系统。
- 优化日志输出。
- 修复已知Bug。
下载地址:
Beta (0.1.1) 2013-10-22
更新内容:
- 对css进行多浏览器兼容,例如自动添加
-webkit-
、-moz-
前缀。 - 日志输出优化。
- 界面拖动问题修复。
下载地址:
Beta (0.1.0) 2013-10-14
下载地址:
- 界面优化
- ReadMe优化