@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.
Files changed (2) hide show
  1. package/README.md +48 -41
  2. 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
- 全局安装后可直接使用 `hile` 命令:
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
- 在**当前工作目录**(通常为项目根,且含 `package.json`)下启动服务。按以下顺序加载服务并启动:
21
+ 在当前工作目录(通常为项目根,且包含 `package.json`)启动服务。加载顺序如下:
22
22
 
23
- 1. **package.json 中的 `hile.auto_load_packages`**(若存在):按数组顺序加载所列**模块名**的默认导出作为服务。
24
- 2. **运行时目录下的 `*.boot.ts` / `*.boot.js`**:扫描并加载每个文件的默认导出作为服务。
23
+ 1. `package.json` 中的 `hile.auto_load_packages`(如存在)
24
+ 2. 运行时目录下的 `*.boot.ts` / `*.boot.js`
25
25
 
26
- 若上述两者均未提供任何可加载项,CLI 会输出 `no services to load` 并退出。每个加载项(模块或 boot 文件)的默认导出须通过 `isService` 校验,否则会抛出 `invalid service file`。
26
+ 若两者都未提供可加载服务,CLI 输出 `no services to load` 并退出。每个加载项的默认导出都必须通过 `isService` 校验,否则抛出 `invalid service file`。
27
27
 
28
28
  ```bash
29
- hile start # 生产模式:NODE_ENV=production,扫描 dist/ 目录
30
- hile start --dev # 开发模式:NODE_ENV=development,扫描 src/ 目录(通过 tsx 支持 TypeScript)
29
+ hile start
30
+ hile start --dev
31
31
  ```
32
32
 
33
33
  | 选项 | 说明 | 默认值 |
34
34
  |------|------|--------|
35
- | `-d, --dev` | 开发模式:设置 `NODE_ENV=development`,使用 tsx 运行 TypeScript,扫描 `src/` | `false` |
36
- | `-e, --env-file <path>` | 加载指定 env 文件到 `process.env`(与 Node 原生 `--env-file` 语义一致:先加载的优先,已存在的 key 不覆盖)。可多次指定 | — |
35
+ | `-d, --dev` | 开发模式:`NODE_ENV=development`,使用 tsx,扫描 `src/` | `false` |
36
+ | `-e, --env-file <path>` | 加载 env 文件到 `process.env`,可多次指定 | — |
37
37
 
38
- 未使用 `--dev` 时,CLI 会将 `process.env.NODE_ENV` 设为 `production`;使用 `--dev` 时设为 `development`,便于业务代码区分环境。
38
+ - `--dev` 模式:`NODE_ENV=production`
39
+ - `--dev` 模式:`NODE_ENV=development`
39
40
 
40
- **示例:** `hile start --env-file .env --env-file .env.local` 会先加载 `.env`,再加载 `.env.local`(后者不会覆盖前者已设置的变量)。依赖 Node 20.12+ 原生 `process.loadEnvFile()`。
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
- CLI 按以下优先级确定扫描目录:
58
+ 扫描目录优先级:
52
59
 
53
- 1. 环境变量 `HILE_RUNTIME_DIR`(如果设置)
54
- 2. 开发模式(`--dev`)→ `src/`
55
- 3. 生产模式 → `dist/`
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
- 在项目根目录的 `package.json` 中可增加 `hile.auto_load_packages`,用于在扫描 boot 文件**之前**先加载指定模块的默认导出作为服务:
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
- - **含义**:数组中的每一项为**模块名**(与 `import('模块名')` 一致),不能写文件路径。
77
- - **顺序**:按数组顺序依次加载,再加载运行时目录下的 `*.boot.{ts,js}`。
78
- - **要求**:每个模块的默认导出必须是 `defineService` / `container.register` 的返回值(通过 `isService` 校验)。若无 `hile` 或 `auto_load_packages`,则仅通过 boot 文件加载服务。
79
- - **注意**:`hile` 配置为可选项。若当前工作目录存在 `package.json`,会读取其中可选的 `hile.auto_load_packages` 并优先加载;未配置该项时,仅通过 boot 文件加载服务。
81
+ 规则:
82
+
83
+ - 数组项必须是模块名(与 `import('module')` 语义一致)
84
+ - 按数组顺序加载,然后再扫描 `*.boot.{ts,js}`
85
+ - 每个模块默认导出必须是合法 Hile 服务(通过 `isService`)
80
86
 
81
87
  ## Boot 文件规范
82
88
 
83
- 每个 `*.boot.ts` 文件必须默认导出一个通过 `defineService` 定义的服务:
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
- - 文件名必须以 `.boot.ts` 或 `.boot.js` 结尾
100
- - 必须有 `default` 导出
101
- - 导出值必须是 `defineService` / `container.register` 的返回值(通过 `isService` 校验)
104
+ 要求:
105
+
106
+ - 文件名后缀必须为 `.boot.ts` 或 `.boot.js`
107
+ - 必须存在 `default` 导出
108
+ - 导出值必须为 `defineService` / `container.register` 返回值
102
109
 
103
110
  ## 优雅关闭
104
111
 
105
- 进程收到退出信号时(SIGTERMSIGINT 等),CLI 自动调用 `container.shutdown()` 按逆序销毁所有已启动的服务,确保资源正确释放。
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 # HTTP 服务(自启动)
119
+ │ ├── database.boot.ts
120
+ │ ├── http.boot.ts
114
121
  │ └── services/
115
- │ ├── config.ts # 配置服务(被依赖,不自启动)
116
- │ └── cache.ts # 缓存服务(被依赖,不自启动)
117
- ├── package.json # 可含 hile.auto_load_packages
122
+ │ ├── config.ts
123
+ │ └── cache.ts
124
+ ├── package.json
118
125
  └── tsconfig.json
119
126
  ```
120
127
 
121
- 服务加载来源:先按 `package.json` 的 `hile.auto_load_packages`(若有)加载模块默认导出,再扫描运行时目录下的 `*.boot.{ts,js}`;其余服务通过 `loadService` 按需加载。
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.13",
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.16",
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": "1070e55ba47e976946b8e1536dfda43211c3251a"
32
+ "gitHead": "6672fc4cdc551c4265912cc85ee2e96fc44bc4c9"
33
33
  }