your-milkio-serve-name v0.0.0-alpha.1
Milkio
Milkio 是一款 TSRPC 脚手架,自带了许多实用功能,使你可以开箱即用。由实际业务所沉淀的经验总结而来。
TSRPC + Prisma + CacheManager + ESLint + Prettier
Milkio 不对任何代码进行封装,这意味着 Milkio 做的一切,都是显式可见且可以由你自由修改的。
目录
api
与客户端连接
package.json
、TSRPC 的配置与目录结构经过了改造。使我们可以将后端的 proto
发布为 npm 包,供客户端调用。在默认的配置下,这指挥发布 /src/proto
目录中的内容,不会暴露后端的代码。
在客户端,你可以通过 npm i "你的后端目录路径"
进行安装。包名与 package.json
中的 name
值相同:
import { serviceProto } from "your-milkio-serve-name";
export const client = new HttpClient(serviceProto, { ... });
也可以发布为 npm 包,发布后,通过 npm i "包名"
来安装,这样可以跨项目使用。
这和 TSRPC-CLI 自带的 SYNC 功能有什么优劣?
TSRPC-CLI SYNC 适合全栈开发者,在服务端的代码更新之后,会立即同步到客户端中,开发体验极佳。
但是对于前后的分离,或计划开发微服务项目或中台项目的同学们来说,有些不太适合:
一个服务端不一定有一个严格意义上对应客户端,甚至可能有多个对应的客户端。
客户端与服务端的代码,需要放置在同一个仓库里。
如果服务端作为中台或微服务,或是提供公共 Api 供其他用户使用的话,发布为 npm 包是更好的选择。
但对于全栈开发者来说,TSRPC-CLI SYNC 可能是更优的选择。使用发布为 npm 包的方式,同样存在缺点:
- 后端开发完成后,需要手动执行
npm run build
,或向 npm 发布一次版本更新,才能生效。这增加了心智负担。
但你并非两者无法得兼,取消 tsrpc.config.ts
中 sync
相关段落的注释,即可重新启用 TSRPC 自带的 SYNC 功能。
数据库 ORM
Prisma 是一款令人惊艳的数据库 ORM 工具,Milkio 内置了与它的整合。
默认情况下,使用 Mysql 作为数据库,你也可以换成 Mongodb 或 Sqlite 等任何 Prisma 支持的数据库,在 /prisma/schema.prisma
中修改。
同时,你需要手动配置与数据库的连接信息,在 /.env
中修改环境变量即可,参见 Prisma 文档
命令
npm run prisma
- 执行任意 Prisma 命令npm run prisma:studio
- 运行 Prisma Studionpm run prisma:migrate
- 创建和应用迁移npm run prisma:deploy
- 部署至生产环境
Must specific a resolveModule handler for resolve '@prisma/client'
造成该错误的原因,是在 proto
目录中引用了来自 Prisma
的类型。
proto
目录对 TSRPC 来说很特殊,不只是为了定义 TypeScript 类型,在运行时也会通过定义的这些类型,进行运行时校验。
因此,目录中的所有类型,都必须是 TypeScript 内置的、被 TSRPC 所支持的类型,参见文档。