UNPKG

gulp-turbo

Version:

前端工作流(requirejs/jade/stylus/coffee),完整强缩进工作流,同步异步模板复用,高效率适合初期前端团队

282 lines (206 loc) 9.6 kB
## gulp-Turbo v2.0.17 > 译:涡轮增压器, 前端工作流,为前端开发联调加速。 ### 前端工作流 功能说明 > 1. 快速构建前端项目 > 1. 提供易于开发、调试的开发联调环境,支持预编译语言(jade,stylus,coffee) > 1. 提供基于requirejs的实时打包服务。 > 1. 提供http server, 支持mock接口数据功能。 > 1. 提供json文件自动校验 > 1. 提供80端口代理、转发功能(可用于多项目联调) > 1. 提供透明代理(即:线下不存在的资源,直接抓取线上) > 1. 便捷的移动端调试(默认开启htpp代理服务,端口8989,可以代替fiddler或charles.) > 1. 支持https #### 安装(依赖node.js,npm) ```shell #全局gulp包 npm i gulp -g #本地gulp包 npm i gulp --save #安装gulp-turbo npm i gulp-turbo --save ``` ## 创建项目 > 可以使用[yomen生成器](https://www.npmjs.com/package/generator-turbo),或者按照以下步骤创建项目。 #### 1. 初始化npm项目、安装依赖 ``` npm init ``` #### 2. 创建gulpfile.js ```javascript var gulp = require('gulp') , turbo = require('gulp-turbo') ; ``` #### 3.配置项目(创建project-conf.json) > 注意:json文件里面不能有注释 ``` { //路由路径:比如将项目访问根目录127.0.0.1改为虚拟路径http://127.0.0.1/tech-bs "routerPath": "/tech-bs", //项目文件夹根目录名称 "approot": "app", //默认开发模式 "distMode": "dev", //静态资源域名(需要将此域名绑定本服务器hosts)。项目中的静态资源都是以带有域名的绝对路径引用的,将会用到这个配置。 "domain": "//xxx.bbb.com", //是否启用透明代理 "isLucencyProxy": true, //自动刷新浏览器。用于调试 true是开启,将会在页面注入一个js用来做实时通讯。 "forceLivereload": true, //是否去除资源文件名重命名为hash后缀的处理,默认是带有hash后缀的。例如:demo-fab59d1421.js "isRemoveHash": false, //默认端口 "httpPort": 80, //反向代理,用于共享 httpPort 端口 "serverProxies": [{ //如果用户访问这个路径,如 http://127.0.0.1/tech-bs/abc, 相当与访问 target设置的http路径,但还是走httpPort端口 "source": "/tech-bs/abc", "target": "http://127.0.0.1:8080/tech-bs/abc", "options": { //请求头 "headers": { "ABC_HEADER": "abc" } } }, { "source": "/tech-bs/aaa", "target": "http://127.0.0.1:8081/tech-bs/aaa" }], // 代理服务器端口。 通常用于调试移动端,抓包,替换请求. 类似fiddler或者charlse "proxyPort": 8989, //代理规则(支持正则,可以设置多个规则) "proxyRule": [{ // 替换规则 "pattern": "xxx.b.com/skyfire/ssu/editBefore1", // 用于响应的文件 "responder": "/Users/kings/didi/prod/fe-scaffold-v1/app/dev/html/page1.html" }] } ``` #### 4.运行 > 注意: > 1. mac监听1024以下端口通常需要 sudo gulp > 2. 访问路径为 http://127.0.0.1/ +routerPath 例:http://127.0.0.1/tech-bs > 3. 启动服务后,将持续监听src下的目录文件变化,自动编译。 > 4. gulp启动服务后,命令窗口不能关闭。想要实现关闭命令行服务继续运行,可以执行 nohup gulp & ```shell #创建文件夹 gulp init #启动服务 gulp ``` ## 运行example ```shell git clone git@github.com:ian000/gulp-turbo.git cd gulp-turbo npm i cd example npm i gulp (注意:mac监听1024以下端口通常需要 sudo gulp) ``` #### 快速构建前端项目目录 ```shell gulp init ``` #### 提供易于开发、调试的开发联调环境(支持预编译语言jade,stylus,coffee) 运行默认环境 dev ```shell gulp ``` #### 提供基于requirejs的实时打包服务。 运行编译环境 dist, 用于上线 ```shell gulp dist ``` #### 提供http server, 支持mock接口数据功能。 ```text 按照后端接口,在mock目录下按层级创建json文件.详细请参考现存的mock数据路径。 ``` #### 提供80端口代理、转发功能 ```json 在package.json文件中设置转发规则。 e.g : "serverProxies":[ { "source": "/tech-bs/abc", "target": "http://127.0.0.1:8080/tech-bs/abc", "options": { "headers": { "ABC_HEADER": "abc" } } }, { "source": "/tech-bs/aaa", "target": "http://127.0.0.1:8081/tech-bs/aaa" } ] 当访问 http://127.0.0.1/tech-bs/abc 时,会命中第一条代理规则,转发到 8080端口对应的路径。 这对于并行开发多个项目很有用。 ``` #### 提供透明代理(即:线下不存在的资源,直接抓取线上) #### 便捷的移动端调试(默认开启htpp代理服务,端口8989,可以代替fiddler或charles.) ``` // 代理服务器端口。 通常用于调试移动端,抓包,替换请求. 类似fiddler或者charlse "proxyPort": 8989, //代理规则(支持正则,可以设置多个规则) "proxyRule": [{ // 替换规则 "pattern": "xxx.b.com/skyfire/ssu/editBefore1", // 用于响应的文件 "responder": "/Users/kings/didi/prod/fe-scaffold-v1/app/dev/html/page1.html" }] ``` #### 支持https 在https项目里面,静态资源服务就需要支持https。 在turbo里支持https服务很简单。只需要在project-conf.json里面将 https属性设置为ture,重启服务即可。 注意:https默认端口为 443, 由于本地没有https证书,第一次运行,需要在浏览器下点选“信任证书”。如果没有提示,请在浏览器打开静态资源请求,届时会弹出警告,选择信任即可。 #### 问题列表 1. [- 使用turbo,前后端如何联调页面?](https://github.com/ian000/gulp-turbo/wiki/%E4%BD%BF%E7%94%A8turbo%EF%BC%8C%E5%89%8D%E5%90%8E%E7%AB%AF%E5%A6%82%E4%BD%95%E8%81%94%E8%B0%83%E9%A1%B5%E9%9D%A2) 1. [- 如何设置浏览器代理?](https://github.com/ian000/gulp-turbo/wiki/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E6%B5%8F%E8%A7%88%E5%99%A8%E4%BB%A3%E7%90%86) 1. [- 手动安装chrome代理插件:SwitchyOmega](http://jingyan.baidu.com/article/11c17a2c121c0ff446e39d16.html) #### change log [09.05] - 修改gulp任务生成文件的权限,去掉turboCache缓存机制 [05.18] - 解决本地静态server在IE9以上访问时css文件未被识别而忽略渲染,导致页面样式出不来的bug [05.12] - 解决之前loder模式的bug,更新README文档 [04.25] - 编译jade模板(包含html、js)时注入wwwroot参数, dev模式下解除了与domain的耦合 [04.19] - 修改线上透明代理逻辑,不再需要vhost配置,增加一个是否开启透明代理的开关配置isLucencyProxy [03.26] - 添加css autoprefixer [03.09] - 调整loder,针对loder逻辑透明化处理,并重新整合静态资源。此次调整新建为2.x.x分支,不兼容之前版本(<2.0.0)。 [02.19] - js资源文件名添加MD5后缀形式,对应调整loder,每次dist时添加clean操作,会清除dist和dev目录 [02.18] - 支持https [01.27] - 修复watch中存在的bug,任务出现错误流中断时,任务不会结束且不能再次触发的问题 [01.15] - 优化dist执行过去,添加文件缓存,再次执行dist时,未变更文件将直接从文件缓存中提取,加快dist执行时间 [01.12] - 添加静态资源管理css、image部分支持 [01.08] - 修复透明代理 [01.04] - 减掉$CONFIG需要指定entryPath的配置,修改页面loder伴生文件的引用,入口文件将由页面引用的loder伴生文件名决定。 - 去掉dist模式时的livereload [2015~] [12.29] - 新增静态资源加载器(js部分) - 新增entry文件夹,支持子目录 - 抽离了require配置文件 [12.11] - 优化dist模式,js压缩时添加md5变更匹配 - 新加tasks任务,展示可用任务信息;gulp默认default任务改为dev - 解决dist模式下watch不能实时压缩的问题;引入coffee-script,使用时需要再coffee register [12.10] - 优化gulpfile,减少依赖,使用更方便,直接引入便可 [12.03] -【里程碑】将脚手架包装成npm组件 - 加入json文件校验 - 为解决gulpfile.coffe以后的维护问题,拆分gulpfile.coffe到gulp文件夹 - 压缩css、js时,添加处理文件的log信息输出 [12.02] - 在gulp dist之前不需要先执行gulp dev了 [11.16] - svnChanges任务修改,过滤掉文件夹和删除的变更记录 [11.12] - 提供80端口代理、转发功能 - 新增svnChanges任务,获取svn log中的change list, 以便用于填写上线单 [11.10] - 在dist模式下,增加sourcemaps支持 [11.09] - 抽离配置文件到package.json中 [11.06] - 新增图片文件夹 - 支持透明代理 - 支持代理 [11.05] - 修复dist模式 [11.04] - 新增page_$config.json - 自动配置页面内的wwwroot #### TODOS 1. 将资源合并,构建组件化机制。 #### Contributors <img src="https://avatars3.githubusercontent.com/u/3196171?v=3&s=40"> [赵新](https://github.com/ian000) <img src="https://avatars1.githubusercontent.com/u/6636353?v=3&s=40"> [王江伟](https://github.com/RK-WJW)