{"id":18409368,"url":"https://github.com/be-fe/gulp-bird","last_synced_at":"2025-04-07T09:33:43.129Z","repository":{"id":57256913,"uuid":"94064338","full_name":"be-fe/gulp-bird","owner":"be-fe","description":"gulp-bird","archived":false,"fork":false,"pushed_at":"2017-09-29T12:13:10.000Z","size":3190,"stargazers_count":7,"open_issues_count":1,"forks_count":2,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-22T16:46:21.014Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/be-fe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-12T06:50:08.000Z","updated_at":"2018-07-04T03:30:24.000Z","dependencies_parsed_at":"2022-08-25T02:40:53.299Z","dependency_job_id":null,"html_url":"https://github.com/be-fe/gulp-bird","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/be-fe%2Fgulp-bird","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/be-fe%2Fgulp-bird/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/be-fe%2Fgulp-bird/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/be-fe%2Fgulp-bird/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/be-fe","download_url":"https://codeload.github.com/be-fe/gulp-bird/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247626904,"owners_count":20969409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T03:24:52.753Z","updated_at":"2025-04-07T09:33:42.844Z","avatar_url":"https://github.com/be-fe.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gulp-bird\n\n### 起源\n\n- 起源于[bird](https://github.com/weger/bird)，但是名字有点误导，并不是一个gulp插件，在bird基础上进行了一些优化并发布到了npm，配置方法和bird一样\n\n### 功能介绍\n\n#### 基本功能：本地联调解决跨域问题\n本地webserver优先寻找对应的本地资源， 如果没找到则会走转发规则，转发规则也没找到才会返回404.\n\n这样假设你有这样一个项目：\n本地有如下文件\n\n```\nproject\n    --- index.html\n    --- list.json\n```\n\ntargetServer上有如下文件\n\n```\ntargetServer\n    --- detail.html\n    --- detail.json\n```\n\n以peoject目录作为basePath，启动bird server，那么访问`localhost:8008/index.html`就会加载本地的index.html页面， 访问`localhost:8008/detail.html`就会加载服务端的页面，ajax请求`list.json`，返回的是本地的`list.json`, 请求`detail.json`，则返回服务器上的`detail.json`。\n\n这样就通过代理服务器绕过了跨域限制。\n\n#### 联调需要身份校验的接口：\n\n在targetServer中配置身份校验信息，则可以帮助我们联调一些需要身份验证的接口\n\n```js\n    \"headers\": {\n         \"cookie\": \"xplatform_ge=4ffcc236a075c3e1f5068f172f654bbe9a1f23adc1563138c432b72b0d06261a153cc6f5a40\"\n    }\n```\n\n#### 特殊规则\n\n可以通过配置规则，走一些特殊的转发规则，请参见下面的使用手册。\n\n### 使用手册\n1、创建一个config.js文件（名称任意）\n\n```js\n    var bird = require('gulp-bird');\n    //静态服务器配置，可同时配置多个，域名需host到127.0.0.1\n    var server = {\n        \"8008\": {\n            //静态文件根目录\n            \"basePath\": \"/Users/baidu/Desktop/frontEnd/Baidu/Hi-new-backend/src\",\n            // 是否开启调试模式，true(表示server端不缓存)，false（反之）\n            \"debug\": true,\n            //忽略的静态文件请求，与此正则匹配的请求将直接走转发规则（可选配置）\n            \"ignoreRegExp\":  /\\/js\\/urls\\.js/g\n\n        }\n    };\n    //转发规则——静态服务器没有响应的或者忽略的请求将根据一下规则转发\n    var transpondRules = {\n        \"8008\": {\n            //目标服务器的ip和端口，域名也可，但注意不要被host了\n           targetServer: {\n                \"port\": \"8274\",\n                \"host\": \"cp01-hiserver-sandbox1-tc.cp01.baidu.com\",\n                \"replaceHeaders\": true, //当为true时，如果cookie or header中有相同key，则替换\n                \"headers\": {\n                    \"cookie\": \"xplatform_ge=4ffcc236a075c3e1f5068f172f654bbe9a1f23adc1563138c432b72b0d06261a153cc6f5a40\"\n                }\n            },\n            //特殊请求转发，可选配置，内部的host、port和attachHeaders为可选参数\n            regExpPath: {\n                \"/hrlms/rs\": {\n                    //\"host\": \"10.44.67.14\",\n                    //\"port\": \"8045\",\n                    //\"attachHeaders\": {\"app-id\": 5},\n                    \"path\": \"/hrlms/rs\"\n                }\n            }\n        },\n        \"ajaxOnly\": false\n    };\n\n    var toolsConf = {\n        weinre: {\n            open: true, //和移动调试工具条中的vconsole冲突, 当为true时vconsole自动关闭\n            port: 9001\n        },\n\n        showTools: true //移动端调试工具条，PC端开发可关闭\n    };\n\n    bird.start(server, transpondRules, toolsConf);\n\n```\n\n2、用node执行它\n\n```sh\n    node config.js\n```\n\n### 如何开发和贡献代码\n\n```sh\nnpm install\nnode app.js\n```\n\n然后访问`localhost:7676`查看效果","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbe-fe%2Fgulp-bird","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbe-fe%2Fgulp-bird","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbe-fe%2Fgulp-bird/lists"}