0.0.0-alpha.1 • Published 1 year ago

your-milkio-serve-name v0.0.0-alpha.1

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

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.tssync 相关段落的注释,即可重新启用 TSRPC 自带的 SYNC 功能。

数据库 ORM

Prisma 是一款令人惊艳的数据库 ORM 工具,Milkio 内置了与它的整合。

默认情况下,使用 Mysql 作为数据库,你也可以换成 Mongodb 或 Sqlite 等任何 Prisma 支持的数据库,在 /prisma/schema.prisma 中修改。

同时,你需要手动配置与数据库的连接信息,在 /.env 中修改环境变量即可,参见 Prisma 文档

命令

Must specific a resolveModule handler for resolve '@prisma/client'

造成该错误的原因,是在 proto 目录中引用了来自 Prisma 的类型。

proto 目录对 TSRPC 来说很特殊,不只是为了定义 TypeScript 类型,在运行时也会通过定义的这些类型,进行运行时校验。

因此,目录中的所有类型,都必须是 TypeScript 内置的、被 TSRPC 所支持的类型,参见文档

0.0.0-alpha.1

1 year ago

0.0.0-alpha.0

1 year ago

0.0.0

1 year ago