Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/be-fe/gulp-bird
gulp-bird
https://github.com/be-fe/gulp-bird
Last synced: about 2 months ago
JSON representation
gulp-bird
- Host: GitHub
- URL: https://github.com/be-fe/gulp-bird
- Owner: be-fe
- Created: 2017-06-12T06:50:08.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-09-29T12:13:10.000Z (about 7 years ago)
- Last Synced: 2024-10-10T19:52:25.777Z (3 months ago)
- Language: JavaScript
- Size: 3.04 MB
- Stars: 7
- Watchers: 10
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# gulp-bird
### 起源
- 起源于[bird](https://github.com/weger/bird),但是名字有点误导,并不是一个gulp插件,在bird基础上进行了一些优化并发布到了npm,配置方法和bird一样
### 功能介绍
#### 基本功能:本地联调解决跨域问题
本地webserver优先寻找对应的本地资源, 如果没找到则会走转发规则,转发规则也没找到才会返回404.这样假设你有这样一个项目:
本地有如下文件```
project
--- index.html
--- list.json
```targetServer上有如下文件
```
targetServer
--- detail.html
--- detail.json
```以peoject目录作为basePath,启动bird server,那么访问`localhost:8008/index.html`就会加载本地的index.html页面, 访问`localhost:8008/detail.html`就会加载服务端的页面,ajax请求`list.json`,返回的是本地的`list.json`, 请求`detail.json`,则返回服务器上的`detail.json`。
这样就通过代理服务器绕过了跨域限制。
#### 联调需要身份校验的接口:
在targetServer中配置身份校验信息,则可以帮助我们联调一些需要身份验证的接口
```js
"headers": {
"cookie": "xplatform_ge=4ffcc236a075c3e1f5068f172f654bbe9a1f23adc1563138c432b72b0d06261a153cc6f5a40"
}
```#### 特殊规则
可以通过配置规则,走一些特殊的转发规则,请参见下面的使用手册。
### 使用手册
1、创建一个config.js文件(名称任意)```js
var bird = require('gulp-bird');
//静态服务器配置,可同时配置多个,域名需host到127.0.0.1
var server = {
"8008": {
//静态文件根目录
"basePath": "/Users/baidu/Desktop/frontEnd/Baidu/Hi-new-backend/src",
// 是否开启调试模式,true(表示server端不缓存),false(反之)
"debug": true,
//忽略的静态文件请求,与此正则匹配的请求将直接走转发规则(可选配置)
"ignoreRegExp": /\/js\/urls\.js/g}
};
//转发规则——静态服务器没有响应的或者忽略的请求将根据一下规则转发
var transpondRules = {
"8008": {
//目标服务器的ip和端口,域名也可,但注意不要被host了
targetServer: {
"port": "8274",
"host": "cp01-hiserver-sandbox1-tc.cp01.baidu.com",
"replaceHeaders": true, //当为true时,如果cookie or header中有相同key,则替换
"headers": {
"cookie": "xplatform_ge=4ffcc236a075c3e1f5068f172f654bbe9a1f23adc1563138c432b72b0d06261a153cc6f5a40"
}
},
//特殊请求转发,可选配置,内部的host、port和attachHeaders为可选参数
regExpPath: {
"/hrlms/rs": {
//"host": "10.44.67.14",
//"port": "8045",
//"attachHeaders": {"app-id": 5},
"path": "/hrlms/rs"
}
}
},
"ajaxOnly": false
};var toolsConf = {
weinre: {
open: true, //和移动调试工具条中的vconsole冲突, 当为true时vconsole自动关闭
port: 9001
},showTools: true //移动端调试工具条,PC端开发可关闭
};bird.start(server, transpondRules, toolsConf);
```
2、用node执行它
```sh
node config.js
```### 如何开发和贡献代码
```sh
npm install
node app.js
```然后访问`localhost:7676`查看效果