{"_id":"@beisen-platform/talentui-dev-server","_rev":"2-2144a168a54db5d4bea10e030cc6f1ff","name":"@beisen-platform/talentui-dev-server","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"SSL-Pass-Phrase":"talentui","author":{"name":"Raymond Li","email":"it1011@qq.com"},"bin":{"talentui-dev-server-cors":"./index.js"},"bugs":{"url":"https://github.com/talentui/dev-server/issues"},"config":{"commitizen":{"path":"./node_modules/@talentui/cz-package-changelog"}},"dependencies":{"body-parser":"^1.18.2","express":"^4.16.2","http-proxy":"^1.16.2","serve-favicon":"^2.4.5","socket.io":"^2.0.4","sudo-prompt":"^8.0.0","uuid":"^3.1.0"},"deprecated":false,"description":"## 问题是什么","devDependencies":{"@talentui/biz-helper":"^1.0.1","@talentui/bootstrap-react":"^1.0.1","@talentui/cz-package-changelog":"^1.0.0","@talentui/webpack-config":"^1.3.5","babel-polyfill":"^6.26.0","commitizen":"^2.9.6","immutable":"^3.8.2","jest":"^21.2.1","react":"^16.2.0","react-dom":"^16.2.0","react-redux":"^5.0.6","react-router-dom":"^4.2.2","react-transition-group":"^2.2.1","redux":"^3.7.2","redux-logger":"^3.0.6","redux-thunk":"^2.2.0","semantic-release":"^8.2.0","socket.io-client":"^2.0.4","webpack":"^3.9.1"},"homepage":"https://github.com/talentui/dev-server#readme","license":"MIT","main":"index.js","name":"@beisen-platform/talentui-dev-server","repository":{"type":"git","url":"git+https://github.com/talentui/dev-server.git"},"scripts":{"build":"npm run rm && node ./compile/index.js","build-prod":"npm run rm && NODE_ENV=production node ./compile/index.js","cm":"git-cz","debug-build":"node --inspect  ./compile/index.js","rm":"rm -rf ./dist/*","semantic-release":"semantic-release pre && npm publish && semantic-release post"},"version":"1.0.0","_id":"@beisen-platform/talentui-dev-server@1.0.0","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-yRytLiI0ySOxXdqTRoLtUL7BU5Sw46gqSB4ujO3S9g+KRkntYTz/sUgu7ugr69ckxOxKpa/5T/EdIO3zB3MSsg==","shasum":"5fbf182725f4468762d5a0050c7a217f4c37679a","tarball":"https://registry.npmjs.org/@beisen-platform/talentui-dev-server/-/talentui-dev-server-1.0.0.tgz","fileCount":26,"unpackedSize":1888157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeO9clCRA9TVsSAnZWagAA6HEP/0cZMlUHXYj+xr7uJyH+\nDFi7vMzOX4TXDL3rYrJxf6XxsQiLX6glwgIxX4Vrqd1UEDFPFpqGAD8meXbW\nOhxJvSsSJHPF8YJJH1dMtDpYweff7YwIkBz6US70p0YLpBHAZBkvctepRHQX\nsyvm9qHnG/doMGyy41SttTQzHJhjqKDWcuirZ3tfmWwyTMj0e/QxUJHSvb/T\nED/EirYhIigRg7OnINaZ3ZB6MSzruBphf31Iv66P+Nq4Z2evtKD7JBdC/8Nt\ntC6b3RU4y3d1TgIN1go8AIXIPMnnIa/SR+7fRuAbnPBBv5gdxOB969rMjQEz\n9aYjS/CUWwFw/485W0QySp7K5p0C2PmEGi+IKxGVppZHjKEIpd6JfYnIoAaF\nna4GPvswA0TMxNBGrMizwujPKVMTEWrwph5SS7pw2HyBNSM9BmN5PedPZkf3\nNTa3KJf8VbDvwvZzRpDRrZdPBmVVodL+4Je8WLqqdCHCtfwLY/Ry7KcqDAup\nfsHHTqxN47TzhCE1Q1b9WeroPBw8PBKQa+wnXGDHIclf+bWq7mCi418rqapc\ntYlkSg//ZjH3mv/SDl9j0BKGrBfdrUyKD65tsGNr5Jq5+7RUd4hkqAmYl6th\nVMOjvNMJHZryYSldouKU/+dQHWzczm/75FddCNH47rRtQyNgsdqWu2k4qI9D\nL6Wt\r\n=9oWT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHRuVwVoSZPEgAs45DmuoMS6knfZAlvPw/SEa14zT93vAiAZ4jB0V/AqvsZDEwngvf+syNJA4bYtxa7rGI+JPeP11g=="}]},"maintainers":[{"name":"beisencorp","email":"ci@beisen.com"}],"_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talentui-dev-server_1.0.0_1580980004378_0.5572524999970143"},"_hasShrinkwrap":false},"1.0.1":{"SSL-Pass-Phrase":"talentui","author":{"name":"Raymond Li","email":"it1011@qq.com"},"bin":{"talentui-dev-server-cors":"./index.js"},"bugs":{"url":"https://github.com/talentui/dev-server/issues"},"config":{"commitizen":{"path":"./node_modules/@talentui/cz-package-changelog"}},"dependencies":{"body-parser":"^1.18.2","express":"^4.16.2","http-proxy":"^1.16.2","serve-favicon":"^2.4.5","socket.io":"^2.0.4","sudo-prompt":"^8.0.0","uuid":"^3.1.0"},"deprecated":false,"description":"## 问题是什么","devDependencies":{"@talentui/biz-helper":"^1.0.1","@talentui/bootstrap-react":"^1.0.1","@talentui/cz-package-changelog":"^1.0.0","@talentui/webpack-config":"^1.3.5","babel-polyfill":"^6.26.0","commitizen":"^2.9.6","immutable":"^3.8.2","jest":"^21.2.1","react":"^16.2.0","react-dom":"^16.2.0","react-redux":"^5.0.6","react-router-dom":"^4.2.2","react-transition-group":"^2.2.1","redux":"^3.7.2","redux-logger":"^3.0.6","redux-thunk":"^2.2.0","semantic-release":"^8.2.0","socket.io-client":"^2.0.4","webpack":"^3.9.1"},"homepage":"https://github.com/talentui/dev-server#readme","license":"MIT","main":"index.js","name":"@beisen-platform/talentui-dev-server","repository":{"type":"git","url":"git+https://github.com/talentui/dev-server.git"},"scripts":{"build":"npm run rm && node ./compile/index.js","build-prod":"npm run rm && NODE_ENV=production node ./compile/index.js","cm":"git-cz","debug-build":"node --inspect  ./compile/index.js","rm":"rm -rf ./dist/*","semantic-release":"semantic-release pre && npm publish && semantic-release post"},"version":"1.0.1","gitHead":"e2d8329965cf9e465744c11f40c89bcd1c0ccbca","_id":"@beisen-platform/talentui-dev-server@1.0.1","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-k+RB8qPjIalhgFeVvdrkNHQc6Idle4dqfmFaK+7x+Z5eBP2erU/xBvGS6yGzFzZ8iuHqjTCI4ThFGmfiQLnJkA==","shasum":"a310fd0ca89110082917f045c20ddf653e6dfa89","tarball":"https://registry.npmjs.org/@beisen-platform/talentui-dev-server/-/talentui-dev-server-1.0.1.tgz","fileCount":26,"unpackedSize":1888157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQnyOCRA9TVsSAnZWagAAeJMP/RPoKEDtotI6kdYL8bOH\n8t9mHD2EY7BsPrdhLKGizvHrMwFvnw4MJadcq0vtyuKmXXkh3BpyN/6DyGj3\n/PWfYG2l179JK41EATAjxeQ6b+4XT5IioANv3CusQqf6LNOdQL1icJbTfIgM\nFTwd3/EYzFvES7mIz6zHusQnCoB/gZ3On2Xr6HETdAt3Qgg8zZnJyIxDU+gQ\nTaGbQqe/uG7NzfnkpDM4AXX9Hfcb2i4jrTTc4nZkqcxXD6o+vrFKKTXu+LDZ\nheoDodUwz6SJHdd3yK8pO2ahCibTUQ9Kn6vcZcC0krhld1E/C3IwuqmBj9gE\nB2eDxsegAIkVYmG0cMo4MFeGk1Dkra1woL8KBVuYa56Hvyla0J00nswRAXAO\n/D5zY3ZFSisdO08inXwdDaIAMUn9Bn9bLCfo6fEfsBJqB8YOFBUc0AXsjqbd\nzyeKyxBZivZ+xi5S0UdYqPNZr/VGL5sa56OP6Ip8dJCblzQA9dlj1M1f70oz\nstZerhutaBXlR1iyfi52mVoRboqZCeH3sQeWpo4Vt7Qy5+acTUq7WrAl+rbR\nvAOmjtuml1QLVHjaSjoP7BUbzJPLpTuTie4wvvpOZBcbDpJd6qJcaYWxG8TY\npIoxUUyHiSYFb/jFHB+f3TFmluKvKrC+yZKVpI4JkH3VskKA6VYvVSAaTu2H\neYT1\r\n=YLcp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZkGUjt70xsLI9c0Q/MQZIvDyOTdDoUApMm0b9ZR/yyAIgDwi1hxG3ruycymQ1gnNTTruYNw6ALAoGmp8016LITCU="}]},"maintainers":[{"name":"beisencorp","email":"ci@beisen.com"}],"_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talentui-dev-server_1.0.1_1581415565418_0.5408990419696895"},"_hasShrinkwrap":false}},"time":{"created":"2020-02-06T09:06:44.209Z","1.0.0":"2020-02-06T09:06:44.574Z","modified":"2022-04-04T18:18:02.724Z","1.0.1":"2020-02-11T10:06:05.626Z"},"maintainers":[{"name":"beisencorp","email":"ci@beisen.com"}],"description":"## 问题是什么","homepage":"https://github.com/talentui/dev-server#readme","repository":{"type":"git","url":"git+https://github.com/talentui/dev-server.git"},"author":{"name":"Raymond Li","email":"it1011@qq.com"},"bugs":{"url":"https://github.com/talentui/dev-server/issues"},"license":"MIT","readme":"# talentui-dev-server\n\n## 问题是什么\n\n当进行前端开发的时候，前端在开发过程中的流程一般是这样的。\n\n* 首先打开线上任何一个环境，（开发，测试，线上）\n* 把前端资源服务器地址指向本地 （配host, 比如stnew03.beisen.com 127.0.01）\n* 启动项目的dev server，监测项目文件变化 ，然后提供静态资源服务，这里会依赖一个类似webpack-dev-server这样的微型web server, 端口常用的是3000，8000，8080等。 （启动项目的开发环境）\n* 安装IIS（windows）或者nginx(unix)的等web server，配置反向代理，这时启动的是80端口，对应线上环境的请求的端口。因为配置了host所有对应的请求会请求到web server上。(配置反向代理服务器)\n* 在web server上对请求文件的路径进行解析，重写(rewrite) 比如，我请求一个stnew03.beisen.com/xxx/xxx/func.min.x39fd0fdfd.js 返回给我的是重新请求127.0.0.1:3000/dist/func.js文件 （url rewrite）\n* 这时基本流程已经完成，打开线上环境，会发现请求真实返回结果是通过第3步服务提供的文件。此时本地开发环境配置基本完成。\n\n这时有几个问题，\n\n1. 首先这个流程很麻烦，\n2. 需要的专业外的知识比较多，有的时候只能照着做不知道为啥\n3. 对环境依赖比较严重，换台电脑就，或者重装系统就得再来一遍，还不一定能成功。\n4. 如果项目换了，规则就需要调整，配置文件在哪，应该改哪里，这是个问题\n\n## 反正就是不方便\n\n那应该如何简化这个流程呢。\n\n首先我们要看，整个\b流程中哪些是可以优化的，创建启动本地项目很简单，开发，测试环境的准备不需要\b前端怎么\b操作，**比较麻烦的是配置nginx 或者IIS代理的过程。**\n\n* \b第一个比较麻烦的，就是\b安装，安装IIS或者nginx首先是相当前端\b专业知识之外的东西，我记得我入职的时候就是照着文档一步一步搞的。有的时候照着文档做完了，中间步骤出了错，完全不知道怎么处理，还得去问其他同时，费时费力。\n* 第二个比较麻烦的就是，一但开了代理，还得配置host，把比如xxx.com指向127.0.0.1, 这样一来所有的请求才能到达代理服务器，\b然后转发到本地项目上。当你不需要的时候还得记得关掉host，虽然有switchhost，还得请dns缓存\n* 开启了代理和配置了host之后，来回切切也没啥，突然你发现一个问题，就是\b访问的页面是个iframe,一个产品的页面嵌入了另外一个产品的页面，这是两个前端的项目，而你本地只启了其中一个，另外一个因为没有资源服务\b文件全部404了，导致啥也看不着。不得己只能换域名了。\n* \b我可能只需要替换一个文件，nginx不合适，又得使用charles或者fiddler，但是mac下收费...，还得破解，其实我们的需求并不复杂，没那个必要啊。\n* 哎呀，我要去另外一个项目去支援两天，上面的步骤还得再来一遍......\n\n所以，我们需要一个专门满足我开发需求的东西，不需要\b复杂的配置，不需要太重，\b\b切换起来要方便，不需要来回切host，不需要\b匹配的文件\b可以直接走线上，调试起来方便。\n\n这些问题已困绕很久了...直到有一天，我们决定改变他。\n\n首先，我们要\b清楚流程是什么，请看图。\n","readmeFilename":"README.md"}