Skip to content

guibwl/easy-node

Repository files navigation

easy-node

基于 Koa2 & pm2 的脚手架

可以直接在项目里使用 ES6/7(Generator Function, Class, Async & Await)等特性,借助 Babel 编译,可稳定运行在 Node.js 环境上。

Init

通过 npx 命令自动生成脚手架

npx enode-cli

or

npx enode-cli <folder name>

*npx comes with npm 5.2+ and higher, run npm i -g npm to update

Getting Start

进入脚手架目录执行:

npm install
npm start

然后通过 http://localhost:7709/ 访问本地服务即可

Npm scripts

1、启动进程(测试、生产、灾备模式的启动命令,用于提供给运维人员进行不同环境的部署)

npm start           # 开发模式
npm run start:test  # 测试模式
npm run start:prd   # 生产模式
npm run start:dr    # 灾备模式

2、停止进程

npm run stop

3、查看运行日志(所有console可以在这里看到)

npm run logs

4、其他命令说明

npm run ls          # 查看进程列表
npm run i:log       # 日志切割工具安装
npm run uni:log     # 日志切割工具卸载
npm run pm2:update  # 升级 pm2
npm run clean       # 清空 编译出来的 app 文件夹
npm run build       # 将项目测试后打包编译到 app 文件夹
npm test            # 单元测试
npm run compile     # 编译

该脚手架进程管理使用pm2,所有 pm2 命令需要在 package.json 的 scripts 属性中配置,后使用 npm run xxx 执行;

更多 pm2 命令请查看官方中文文档

日志管理

日志默认存放于用户目录 $HOME/app-logs/outerr.log
项目首次部署会自动通过 npm install 安装日志切割插件 pm2-logrotate(防止日积月累,日志文件越来越大所以需要切割), 若 npm 不通请使用代理;

pm2-logrotate 默认配置:

  • 日志单个文件限制大小为 10M, 超过则被切割
  • 日志文件数限制 30 个, 超过则被删除
  • 切割出来的日志文件命名格式为 'outerr__YYYY-MM-DD_HH-mm-ss.log'
  • 日志会在每日凌晨 0 点 0 分 根据上一条命名规则执行切割

启动配置说明

启动配置文件为存放于项目目录下的pm2.config.js文件;

配置文件中声明变量说明:

  • $HOME: 服务器用户目录
  • dr: 灾备环境时为 true
  • prd: 生产环境时为 true
  • test: 测试环境时为 true
  • dev: 开发环境时为 true

配置文件配置说明:

  • apps : 需要启动的应用列表
  • name : 应用名称
  • instances: 进程数量
  • log: 日志存放路径
  • env: 开发环境变量
  • env_test: 测试环境变量
  • env_prd: 生产环境变量
  • env_dr: 灾备环境变量

更多配置属性请查看官方中文文档

环境变量说明:

环境变量属性内部配置的任意属性,都能在应用中通过process.env对象访问

      env: {
        NODE_ENV: 'development',
        PORT: '7709',
        HOST: 'www.development.com'
      },
      env_test: {
        NODE_ENV: 'test',
        PORT: '7709',
        HOST: 'www.test.com'
      },
      env_prd: {
        NODE_ENV: 'production',
        PORT: '7709',
        HOST: 'www.production.com'
      }

如上配置:

目录结构说明

.
├── app                     # babel outDir
│   └── *
├── bin
│   ├── debug.js
│   ├── start.js            # 项目启动入口
│   ├── initLogrotate.js    # 服务器首次部署安装日志切割
│   ├── development.js      # 开发模式下项目的入口文件
│   └── production.js       # 线上入口文件
│
├── public                  # 静态资源路径
│   ├── favicon.ico
│   ├── robots.txt
│   └── static
│
├── src                     # 源代码目录,编译时会自动将 src 目录下的文件编译到 app 目录下。src 下的目录结构可以自行组织, 但是必须是 babel 可接受的类型(js, json, etc...)。
│   ├── config              # 配置目录
│   ├── modules             # 模型
│   │   ├── [module name]   # 模块名称/接口名称
│   │   │   ├── controllers # 控制器        
│   │   │   ├── routes      # 路由
│   │   │   ├── services    # service
│   │   │   └── mock        # 假数据
│   │   └── [module name]
│   ├── routes              # 总路由
│   ├── utils               # 公用工具库
│   ├── app.js              # koa 配置
│   └── index.js            # 入口文件
│
├── test                    # 测试目录现在在项目根目录下
│   └── test.js
│
├── views                   # 视图(前端模板)
│   ├── error.ejs
│   ├── index.ejs
│   └── *.ejs
│
├── nginx.conf              # nginx 的配置文件,建议线上使用 nginx 做反向代理
├── package.json            # package.json
├── pm2.config.js           # 用于 pm2 部署
├── LICENSE
└── README.md

Contact

issues

该脚手架根据 koa2-startkit 修改搭建

About

easy node server with pm2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published