# 快速上手

# 项目初始化

使用脚手架 @sfadminltd/cli 创建一个标准的Nest项目:

sfadmin create my-project

注意

请根据提示选择 nest 模板

待脚手架创建项目完毕后,进入my-project目录,会有一个servervue文件夹,分别是后端代码以及前端代码。

# 导入脚本

命令行进入到创建好的后端目录my-project/server后,执行脚手架load命令导入sql脚本,所有的脚本都位于sql目录

$ sfadmin load -e ./sql -u root -p 123456 -t 3306 -a localhost -b my-admin -o
SF-ADMIN-CLI info load Trying to connect...
SF-ADMIN-CLI info load Connection succeeded
SF-ADMIN-CLI notice load importing sql: my-project/server/sql/init.sql
SF-ADMIN-CLI notice load importing sql: my-project/server/sql/upgrade_20210508.sql
SF-ADMIN-CLI info load import sql done
┌─────────┬───────────────────────┐
│ (index) │  Tables_in_my-admin   │
├─────────┼───────────────────────┤
│    0'sys_department'    │
│    1'sys_login_log'    │
│    2'sys_menu'       │
│    3'sys_req_log'     │
│    4'sys_role'       │
│    5'sys_role_department' │
│    6'sys_role_menu'    │
│    7'sys_task'       │
│    8'sys_task_log'     │
│    9'sys_user'       │
│   10'sys_user_role'    │
└─────────┴───────────────────────┘

示例下的命令参数具体含义请查看CLI教程

注意

这里需要你提前准备好MySQL环境
也可以不使用脚手架进行导入,可自行手动创建数据库及导入脚本

# 修改开发配置

基于@nestjs/config (opens new window),后端文件配置在后端目录下的src/config

|─config.production.ts
|─config.default.ts # 默认配置,会被各环境下的配置进行合并覆盖,通用配置可定义在该文件下
|─defineConfig.ts
|─config.development.ts
|─configuration.ts

开发环境下请修改config.development.ts,生产环境下修改config.production.ts。具体配置含义请查看configuration.ts定义的IConfig

文件下的config.${env}.ts中的${env}process.env.NODE_ENV变量决定。可根据自己的需求自行变更。

# 运行

分别进入后端目录及前端目录,运行npm run dev即可

# server
$ cd server
$ npm run dev
# vue
$ cd vue
$ npm run dev

运行后即可访问: http://localhost:9528/ (opens new window)

# 目录结构说明

后端src目录结构:

|─setup-swagger.ts # Swaager文档配置
|─polyfill.ts # polifill
|─main.ts # 主入口
|─config # 配置文件
| |─config.production.ts
| |─config.default.ts
| |─defineConfig.ts
| |─config.development.ts
| |─configuration.ts
|─shared
| |─redis # redisModule 
| | |─redis.module.ts
| | |─redis.interface.ts
| | |─redis.constants.ts
| |─shared.module.ts
| |─services # 全局通用Provider
|─app.module.ts
|─mission
| |─mission.module.ts
| |─mission.decorator.ts # 任务装饰器,所有任务都需要定义该装饰器,否则无法运行
| |─jobs # 后台定时任务定义
|─common # 系统通用定义
| |─dto # 通用DTO定义
| |─contants
| | |─error-code.contants.ts # 系统错误码定义
| | |─decorator.contants.ts # 装饰器常量
| |─filters # 通用过滤器定义
| |─interceptors # 通用拦截器定义
| |─decorators # 通用装饰器定义
| |─exceptions # 系统内置通用异常定义
| |─class # Class Model 不使用Interface定义,使用Interface无法让Swagger识别
|─modules
| |─admin
| | |─core # 核心功能
| | | |─interceptors # 后台管理拦截器定义
| | | |─decorators # 后台管理注解定义
| | | |─provider # 后台管理提供者定义
| | | |─guards # 后台管理守卫定义
| | |─netdisk # 网盘管理模块定义
| | |─system # 系统模块定义
| | |─account # 用户账户模块定义
| | |─login # 登录模块定义
| | |─admin.module.ts # 后台管理模块
| | |─admin.constants.ts # 后台管理模块通用常量
| | |─admin.interface.ts # Admin通用interface定义
| |─ws # Socket模块
|─entities # TypeORM 实体文件定义

# 日志

该系统基于Winston (opens new window)自定义了一套日志模块,根据配置文件进行调整日志输出等级,分为控制台、文件输出。

请使用src/shared/logger/logger.service.ts下的LoggerService进行日志输出调试,输出等级有如下:

  • debug: 4
  • verbose: 3
  • info: 2
  • warn: 1
  • error: 0

注意

默认的控制台输出等级为info,生产环境下默认不允许控制台进行输出,文件输出等级默认为warn。日志默认为当前项目路径下的logs目录,也可自行配置。

默认TypeORM也使用了LoggerService进行日志输出。

最后更新于: 9/12/2021, 10:47:22 PM