@hile/cli 1.0.13 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -41
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @hile/cli
|
|
2
2
|
|
|
3
|
-
Hile 命令行工具,用于启动基于 `@hile/core` 的服务应用。支持通过 `package.json` 配置和/或自动扫描 `*.boot.{ts,js}`
|
|
3
|
+
Hile 命令行工具,用于启动基于 `@hile/core` 的服务应用。支持通过 `package.json` 配置和/或自动扫描 `*.boot.{ts,js}` 加载服务,并在进程退出时执行优雅关闭。
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ Hile 命令行工具,用于启动基于 `@hile/core` 的服务应用。支持
|
|
|
8
8
|
pnpm add @hile/cli
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
全局使用:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
pnpm add -g @hile/cli
|
|
@@ -18,43 +18,48 @@ pnpm add -g @hile/cli
|
|
|
18
18
|
|
|
19
19
|
### `hile start`
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
在当前工作目录(通常为项目根,且包含 `package.json`)启动服务。加载顺序如下:
|
|
22
22
|
|
|
23
|
-
1.
|
|
24
|
-
2.
|
|
23
|
+
1. `package.json` 中的 `hile.auto_load_packages`(如存在)
|
|
24
|
+
2. 运行时目录下的 `*.boot.ts` / `*.boot.js`
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
若两者都未提供可加载服务,CLI 输出 `no services to load` 并退出。每个加载项的默认导出都必须通过 `isService` 校验,否则抛出 `invalid service file`。
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
hile start
|
|
30
|
-
hile start --dev
|
|
29
|
+
hile start
|
|
30
|
+
hile start --dev
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
| 选项 | 说明 | 默认值 |
|
|
34
34
|
|------|------|--------|
|
|
35
|
-
| `-d, --dev` |
|
|
36
|
-
| `-e, --env-file <path>` |
|
|
35
|
+
| `-d, --dev` | 开发模式:`NODE_ENV=development`,使用 tsx,扫描 `src/` | `false` |
|
|
36
|
+
| `-e, --env-file <path>` | 加载 env 文件到 `process.env`,可多次指定 | — |
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
- 非 `--dev` 模式:`NODE_ENV=production`
|
|
39
|
+
- `--dev` 模式:`NODE_ENV=development`
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
示例:
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
```bash
|
|
44
|
+
hile start --env-file .env --env-file .env.local
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
依赖 Node 20.12+ 原生 `process.loadEnvFile()`。
|
|
48
|
+
|
|
49
|
+
### 其他命令
|
|
43
50
|
|
|
44
51
|
```bash
|
|
45
|
-
hile -v
|
|
46
|
-
hile -h
|
|
52
|
+
hile -v
|
|
53
|
+
hile -h
|
|
47
54
|
```
|
|
48
55
|
|
|
49
56
|
## 运行时目录
|
|
50
57
|
|
|
51
|
-
|
|
58
|
+
扫描目录优先级:
|
|
52
59
|
|
|
53
|
-
1.
|
|
54
|
-
2.
|
|
55
|
-
3.
|
|
56
|
-
|
|
57
|
-
可通过环境变量自定义:
|
|
60
|
+
1. `HILE_RUNTIME_DIR`(若设置)
|
|
61
|
+
2. `--dev` 模式:`src/`
|
|
62
|
+
3. 生产模式:`dist/`
|
|
58
63
|
|
|
59
64
|
```bash
|
|
60
65
|
HILE_RUNTIME_DIR=./custom hile start
|
|
@@ -62,7 +67,7 @@ HILE_RUNTIME_DIR=./custom hile start
|
|
|
62
67
|
|
|
63
68
|
## package.json 配置(可选)
|
|
64
69
|
|
|
65
|
-
|
|
70
|
+
可在项目根目录配置 `hile.auto_load_packages`,用于在扫描 boot 文件之前先加载指定模块:
|
|
66
71
|
|
|
67
72
|
```json
|
|
68
73
|
{
|
|
@@ -73,14 +78,15 @@ HILE_RUNTIME_DIR=./custom hile start
|
|
|
73
78
|
}
|
|
74
79
|
```
|
|
75
80
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
81
|
+
规则:
|
|
82
|
+
|
|
83
|
+
- 数组项必须是模块名(与 `import('module')` 语义一致)
|
|
84
|
+
- 按数组顺序加载,然后再扫描 `*.boot.{ts,js}`
|
|
85
|
+
- 每个模块默认导出必须是合法 Hile 服务(通过 `isService`)
|
|
80
86
|
|
|
81
87
|
## Boot 文件规范
|
|
82
88
|
|
|
83
|
-
每个 `*.boot.ts`
|
|
89
|
+
每个 `*.boot.ts` / `*.boot.js` 文件必须默认导出一个服务:
|
|
84
90
|
|
|
85
91
|
```typescript
|
|
86
92
|
// src/database.boot.ts
|
|
@@ -95,37 +101,38 @@ export default defineService(async (shutdown) => {
|
|
|
95
101
|
})
|
|
96
102
|
```
|
|
97
103
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
104
|
+
要求:
|
|
105
|
+
|
|
106
|
+
- 文件名后缀必须为 `.boot.ts` 或 `.boot.js`
|
|
107
|
+
- 必须存在 `default` 导出
|
|
108
|
+
- 导出值必须为 `defineService` / `container.register` 返回值
|
|
102
109
|
|
|
103
110
|
## 优雅关闭
|
|
104
111
|
|
|
105
|
-
|
|
112
|
+
进程收到 `SIGTERM`、`SIGINT` 等信号时,CLI 会自动调用 `container.shutdown()`,按逆序销毁已启动服务。
|
|
106
113
|
|
|
107
114
|
## 项目结构示例
|
|
108
115
|
|
|
109
|
-
```
|
|
116
|
+
```text
|
|
110
117
|
my-app/
|
|
111
118
|
├── src/
|
|
112
|
-
│ ├── database.boot.ts
|
|
113
|
-
│ ├── http.boot.ts
|
|
119
|
+
│ ├── database.boot.ts
|
|
120
|
+
│ ├── http.boot.ts
|
|
114
121
|
│ └── services/
|
|
115
|
-
│ ├── config.ts
|
|
116
|
-
│ └── cache.ts
|
|
117
|
-
├── package.json
|
|
122
|
+
│ ├── config.ts
|
|
123
|
+
│ └── cache.ts
|
|
124
|
+
├── package.json
|
|
118
125
|
└── tsconfig.json
|
|
119
126
|
```
|
|
120
127
|
|
|
121
|
-
|
|
128
|
+
服务加载来源:先加载 `hile.auto_load_packages`(如有),再加载运行时目录下的 `*.boot.{ts,js}`。其余服务通过 `loadService` 按需加载。
|
|
122
129
|
|
|
123
130
|
## 开发
|
|
124
131
|
|
|
125
132
|
```bash
|
|
126
133
|
pnpm install
|
|
127
|
-
pnpm build
|
|
128
|
-
pnpm dev
|
|
134
|
+
pnpm build
|
|
135
|
+
pnpm dev
|
|
129
136
|
```
|
|
130
137
|
|
|
131
138
|
## License
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hile/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
"vitest": "^4.0.18"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@hile/core": "^1.0.
|
|
26
|
+
"@hile/core": "^1.0.17",
|
|
27
27
|
"async-exit-hook": "^2.0.1",
|
|
28
28
|
"commander": "^14.0.3",
|
|
29
29
|
"glob": "^13.0.6",
|
|
30
30
|
"tsx": "^4.21.0"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "6672fc4cdc551c4265912cc85ee2e96fc44bc4c9"
|
|
33
33
|
}
|