feat!: 拆分 core / server 入口,peer deps 全部 optional
让只用 Shrimp 核心(RPC + 模块声明 + 内存 CRUD)的项目不必装
express / mongoose / bcrypt / jsonwebtoken,显著降低 install 时间。
- src/core.ts:0 重依赖入口(Shrimp / MemoryShrimpCrud / 类型)
- src/server.ts:在 core 之上再导出 ShrimpServer + MongoShrimpCrud
- package.json:加 exports 字段 + peerDependenciesMeta.optional
- Shrimp.ts:bcrypt 改 lazy import,只有走 Password 字段才触发
- MemoryShrimpCrud.populateItems:接 crudRegistry 参数(对齐 Mongo)
- ShrimpTableModule 构造时自动登记 crudRegistry,业务无需手动 wire
- 新增 test/crudRegistry.test.ts 验证自动登记 + relation 自动 populate
BREAKING: import { ShrimpServer } from 'shrimp-server' 不再可用,
请改为 'shrimp-server/server'。
This commit is contained in:
@@ -16,19 +16,30 @@ cd examples/basic-admin && npm install && npm start
|
||||
|
||||
```sh
|
||||
# 推荐: HTTP(任何能访问 git.zeromvc.com 的机器都能用)
|
||||
npm install git+http://git.zeromvc.com/wc24/shrimp-server.git#v0.1.0
|
||||
npm install git+http://git.zeromvc.com/wc24/shrimp-server.git#v0.2.0
|
||||
|
||||
# 也可以 SSH(需要 ssh key 配好)
|
||||
npm install git+ssh://git@git.zeromvc.com:wc24/shrimp-server.git#v0.1.0
|
||||
npm install git+ssh://git@git.zeromvc.com:wc24/shrimp-server.git#v0.2.0
|
||||
```
|
||||
|
||||
> 仓库 ship `.ts` 源码,消费方项目需要 TS 运行器(`tsx` / `ts-node`)或在打包工具(vite / webpack / esbuild)里能解析 `.ts`。
|
||||
|
||||
### 两个入口,按需选择
|
||||
|
||||
包内提供了**核心**和**完整 server** 两个 entry,**peer deps 全部 optional**——你只装自己用得到的那一份:
|
||||
|
||||
```ts
|
||||
import { ShrimpServer, ShrimpTableModule, MongoShrimpCrud, ShrimpFieldTypes } from "shrimp-server"
|
||||
// ↓ 详见下面"想做什么"指南
|
||||
// 1) 核心: 0 重依赖(只需 node + tsx),适合自己接 HTTP / 只用内存 CRUD / 嵌入其它框架
|
||||
import { Shrimp, ShrimpTableModule, MemoryShrimpCrud, ShrimpFieldTypes } from "shrimp-server"
|
||||
|
||||
// 2) 完整 server: 自带 Express Router + Mongoose + JWT,需要装上面 4 个 peer
|
||||
import { ShrimpServer, MongoShrimpCrud } from "shrimp-server/server"
|
||||
```
|
||||
|
||||
只用 (1) 时,**不要**在自己的 package.json 里写 express/mongoose/bcrypt/jsonwebtoken,可以省下大量 install 时间(尤其是 mongoose 的 native binding)。需要 (2) 时按 peer 范围装齐即可。
|
||||
|
||||
> bcrypt 在 core 里走的是动态 `import('bcrypt')`,不触发 Password 字段 hash / `UserModule.verifyPassword` 就完全不会去 require 它。所以即便用 core 也注册了 password 字段,只要你不真正调用 `add/edit` 写入 Password 或 `getUser` 校验密码,bcrypt 仍是可不装的。
|
||||
|
||||
---
|
||||
|
||||
# 使用指南
|
||||
|
||||
Reference in New Issue
Block a user