v0.5.0: 重新组织目录结构,按职责拆分
- Shrimp.ts (875 行) 按类拆分到 Shrimp/(7 文件: Shrimp, ShrimpModule, ShrimpTableModule, ShrimpPower, ShrimpCrud, UserRoleModule, OperationLogModule) - forMongo/: MongoShrimpCrud + MongoShrimp(原 ShrimpServer 的 mongo 装配部分,无 express) - forExpress/: buildShrimpRouter + jwtAuth + types - main/: index(0 依赖核心) + expmon(express+mongo 整合,导出 ShrimpServer) + types(纯协议) - 入口子路径 server → expmon(express+mongo 整合方案命名更准确) - 删除冗余的 index.ts / core.ts(合并为 main/index.ts)
This commit is contained in:
@@ -6,10 +6,10 @@
|
||||
|
||||
```sh
|
||||
# 推荐: HTTP(任何能访问 git.zeromvc.com 的机器都能用)
|
||||
npm install git+http://git.zeromvc.com/wc24/shrimp-server.git#v0.4.0
|
||||
npm install git+http://git.zeromvc.com/wc24/shrimp-server.git#v0.5.0
|
||||
|
||||
# 也可以 SSH(需要 ssh key 配好)
|
||||
npm install git+ssh://git@git.zeromvc.com:wc24/shrimp-server.git#v0.4.0
|
||||
npm install git+ssh://git@git.zeromvc.com:wc24/shrimp-server.git#v0.5.0
|
||||
```
|
||||
|
||||
> 仓库 ship `.ts` 源码,消费方项目需要 TS 运行器(`tsx` / `ts-node`)或在打包工具(vite / webpack / esbuild)里能解析 `.ts`。
|
||||
@@ -32,11 +32,12 @@ npm install git+ssh://git@git.zeromvc.com:wc24/shrimp-server.git#v0.4.0
|
||||
|
||||
`tsx` 用户不需要这一步(tsx 默认就编译 node_modules 内的 .ts)。
|
||||
|
||||
### TypeScript 用户:让 tsc 识别 `shrimp-server/server` 子路径
|
||||
### TypeScript 用户:让 tsc 识别子路径
|
||||
|
||||
包用 package.json `exports` 字段划分了 `'shrimp-server'`(0 重依赖核心)和
|
||||
`'shrimp-server/server'`(Express 装配体)两个入口。**TS 默认的 `moduleResolution: "node"`
|
||||
不读 `exports`,会找不到子路径模块。** 两个解法二选一:
|
||||
包用 package.json `exports` 字段划分了 `'shrimp-server'`(0 重依赖核心)、
|
||||
`'shrimp-server/expmon'`(Express + Mongoose 整合方案)和 `'shrimp-server/types'`
|
||||
(纯类型)三个入口。**TS 默认的 `moduleResolution: "node"` 不读 `exports`,会找不到子路径模块。**
|
||||
两个解法二选一:
|
||||
|
||||
```jsonc
|
||||
// 方案 A: 升 moduleResolution(配合 module: node16,严格但纯净)
|
||||
@@ -52,8 +53,9 @@ npm install git+ssh://git@git.zeromvc.com:wc24/shrimp-server.git#v0.4.0
|
||||
"module": "commonjs",
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"shrimp-server": ["node_modules/shrimp-server/src/core.ts"],
|
||||
"shrimp-server/server": ["node_modules/shrimp-server/src/server/index.ts"]
|
||||
"shrimp-server": ["node_modules/shrimp-server/src/main/index.ts"],
|
||||
"shrimp-server/expmon": ["node_modules/shrimp-server/src/main/expmon.ts"],
|
||||
"shrimp-server/types": ["node_modules/shrimp-server/src/main/types.ts"]
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -63,14 +65,14 @@ Node 22+ 的 CJS 加载器 **会**读 `exports`,所以运行时不需要额外
|
||||
|
||||
### 三个入口,按需选择
|
||||
|
||||
包内提供了**核心**、**完整 server** 和**纯类型**三个 entry,**peer deps 全部 optional**——你只装自己用得到的那一份:
|
||||
包内提供**核心**、**expmon(Express+Mongo 整合)**和**纯类型**三个 entry,**peer deps 全部 optional**——你只装自己用得到的那一份:
|
||||
|
||||
```ts
|
||||
// 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"
|
||||
// 2) expmon: Express + Mongoose + JWT 整合方案,需要装上面 4 个 peer
|
||||
import { ShrimpServer, MongoShrimpCrud, MongoShrimp } from "shrimp-server/expmon"
|
||||
|
||||
// 3) 纯类型: 只含 IShrimpType.ts(types + ShrimpCode enum + ShrimpError class)
|
||||
// 给前端 / shrimp-admin / 任何"只要协议、不要框架运行时"的消费方
|
||||
|
||||
Reference in New Issue
Block a user