{"id":13671716,"url":"https://github.com/17koa/koa2-startkit","last_synced_at":"2025-04-27T18:31:36.659Z","repository":{"id":72866609,"uuid":"57763241","full_name":"17koa/koa2-startkit","owner":"17koa","description":"Koa2 简单开发脚手架","archived":false,"fork":false,"pushed_at":"2016-10-26T10:34:34.000Z","size":29,"stargazers_count":345,"open_issues_count":1,"forks_count":78,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-11-11T09:44:02.953Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/17koa.png","metadata":{"files":{"readme":"README.md","changelog":"History.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-05-01T19:23:47.000Z","updated_at":"2024-07-01T07:10:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"2d5f1792-389b-41f0-ae2b-6e93340802e7","html_url":"https://github.com/17koa/koa2-startkit","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/17koa%2Fkoa2-startkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/17koa%2Fkoa2-startkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/17koa%2Fkoa2-startkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/17koa%2Fkoa2-startkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/17koa","download_url":"https://codeload.github.com/17koa/koa2-startkit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251187253,"owners_count":21549610,"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-08-02T09:01:17.028Z","updated_at":"2025-04-27T18:31:36.118Z","avatar_url":"https://github.com/17koa.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# koa2-startkit\n[![Build Status](https://travis-ci.org/17koa/koa2-startkit.svg?branch=master)](https://travis-ci.org/17koa/koa2-startkit)  \n一个 Koa2 的脚手架\n\n可以直接在项目里使用 ES6/7（Generator Function, Class, Async \u0026 Await）等特性，借助 Babel 编译，可稳定运行在 Node.js 环境上。\n\n[开发模式] 开发模式下，文件修改后~~自动重启 Node.js~~ 自动热重启服务。       \n\n[调试模式] 断点调试 (test feature)\n\n[线上模式] 借助 pm2 使用 cluster 模式压榨多核 CPU 性能 \n\n## Getting Start\n\n```\ngit clone https://github.com/17koa/koa2-startkit.git\ncd koa2-startkit\nnpm install # 国内可以使用 cnpm 加速, 教育网可使用 rednpm (https://npm.mirror.cqupt.edu.cn) 加速\nnpm start\n```\n\n然后使用浏览器打开 http://127.0.0.1:3000/ 即可\n\n## Npm scripts\n\n```bash\n$ npm start # 开发模式, 开启开发模式之后对于 /src 目录内的任何改动会自动热替换生效\n$ npm run build # build\n$ npm test # 单元测试\n$ npm run compile # 编译\n$ npm run production # 生产模式\n```\n\n\n\n## 线上部署\n\n```bash\nnpm run build # 单测, 编译 ES6/7 代码至 ES5\nvim pm2.json # 检查 pm2 的配置\npm2 start pm2.json # 请确保已经 global 安装 pm2    (npm i pm2-cli -g)\ncp nginx.conf /etc/nginx/conf.d/YourProject.conf # 自行配置 nginx 反代\n```\n\n\n\n## 配置文件的 trick\n\n引用配置的方式: \n\n```javascript\nimport config from './config'\n```\n\n默认配置文件位于 `src/config/default.js`, 建议只在这里创建配置字段, 在同目录下创建另一个 `custom.js`, 这个配置会覆盖(override) 默认配置, 且此文件不会被包含在 git 中, 避免密码泄露, 线上配置等问题.\n\n\n\n## 断点调试\n\n[测试功能]\n\n```bash\n$ npm run debug\n```\n\n在 VSCode 编辑器中: \n\n![1](https://dn-redrock.qbox.me/github/koa-1.png)\n\n1. 选择DEBUG图标\n2. 点击绿色三角, 环境选择 Node.js\n3. 把program改成 ${workspaceRoot}/bin/debug.js, 把sourceMaps设为true\n4. ![2](https://dn-redrock.qbox.me/github/koa-2.png)\n5. 再次点击绿色三角启动debug\n6. 进入 app/ 目录下找到对应的文件(!!注意是app目录), 在需要的地方打上断点(这里的代码是babel编译后的, 很难看懂啊, 但是在 node 支持 async, import 之前, 只能采用这种方法)\n7. ![3](https://dn-redrock.qbox.me/github/koa-3.png)\n8. 访问对应页面, vscode应该会弹出到断点处, 这个时候应该显示的就是 ES6/7 代码了\n9. ![4](https://dn-redrock.qbox.me/github/koa-4.png)\n10. 左侧的调试窗口已经可以正常使用了\n11. ![5](https://dn-redrock.qbox.me/github/koa-5.png)\n\n\n\n\n## 目录结构说明\n\n```bash\n.\n├── LICENSE\n├── README.md\n├── app                     # babel outDir\n│   ├── *\n├── bin\n│   ├── debug.js\n│   ├── development.js      # 开发模式下项目的入口文件\n│   └── production.js       # 线上入口文件, 请预先使用 npm run compile 编译\n├── nginx.conf              # nginx 的配置文件，建议线上使用 nginx 做反向代理。 \n├── package.json            # package.json\n├── pm2.json                # 用于 pm2 部署\n├── public                  # 静态资源路径\n│   ├── favicon.ico\n│   ├── robots.txt\n│   └── static\n├── src                     # 源代码目录，编译时会自动将 src 目录下的文件编译到 app 目录下。src 下的目录结构可以自行组织, 但是必须是 babel 可接受的类型(js, json, etc...)。\n│   ├── app.js              # koa 配置\n│   ├── config              # 配置目录\n│   ├── controllers         # 控制器\n│   ├── index.js            # 入口文件\n│   ├── models              # 模型\n│   ├── routes              # 路由\n│   └── services            # service\n├── test                    # 测试目录现在在项目根目录下\n│   └── test.js\n└── views                   # 视图(前端模板)\n    ├── error.ejs\n    └── index.ejs\n```\n\n\n## Contact\n\n[issues](https://github.com/17koa/koa2-startkit/issues)\n\n[@Ling](https://github.com/wssgcg1213)    ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F17koa%2Fkoa2-startkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F17koa%2Fkoa2-startkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F17koa%2Fkoa2-startkit/lists"}