@linyjs/cli 0.0.2
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/DESIGN.md +901 -0
- package/README.md +596 -0
- package/ZERO_CONFIG_GUIDE.md +462 -0
- package/dist/commands/dev.d.ts +15 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +153 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/init.d.ts +15 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +60 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/pack.d.ts +14 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +257 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/builder.d.ts +27 -0
- package/dist/utils/builder.d.ts.map +1 -0
- package/dist/utils/builder.js +383 -0
- package/dist/utils/builder.js.map +1 -0
- package/package.json +27 -0
- package/src/commands/dev.ts +191 -0
- package/src/commands/init.ts +75 -0
- package/src/commands/pack.ts +315 -0
- package/src/index.ts +84 -0
- package/src/utils/builder.ts +472 -0
- package/tsconfig.json +9 -0
package/README.md
ADDED
|
@@ -0,0 +1,596 @@
|
|
|
1
|
+
# @linyjs/cli - Ling 框架命令行工具
|
|
2
|
+
|
|
3
|
+
## 📦 简介
|
|
4
|
+
|
|
5
|
+
`@linyjs/cli` 是 Ling 框架的官方命令行工具,提供**零配置**的插件打包功能。
|
|
6
|
+
|
|
7
|
+
**核心理念:**
|
|
8
|
+
- ✅ **零配置** - 无需配置 webpack、rollup 等构建工具
|
|
9
|
+
- ✅ **智能构建** - CLI 自动处理所有构建细节
|
|
10
|
+
- ✅ **开箱即用** - 只需编写 TypeScript/TSX 代码即可打包
|
|
11
|
+
- ✅ **优化默认值** - 内置 esbuild,自动 bundle、minify、tree shaking
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 🚀 快速开始
|
|
16
|
+
|
|
17
|
+
### 安装
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# 全局安装(推荐)
|
|
21
|
+
npm install -g @linyjs/cli
|
|
22
|
+
|
|
23
|
+
# 或在项目中使用
|
|
24
|
+
npx @linyjs/cli <command>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 基本用法
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 查看帮助
|
|
31
|
+
npx @linyjs/cli
|
|
32
|
+
|
|
33
|
+
# 创建新插件项目
|
|
34
|
+
npx @linyjs/cli init my-plugin
|
|
35
|
+
|
|
36
|
+
# 打包插件
|
|
37
|
+
cd my-plugin
|
|
38
|
+
npx @linyjs/cli pack
|
|
39
|
+
|
|
40
|
+
# 开发模式(打包 + 安装 + 注册)
|
|
41
|
+
npx @linyjs/cli dev
|
|
42
|
+
|
|
43
|
+
# 验证插件
|
|
44
|
+
npx @linyjs/cli validate my-plugin.mpk
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 📖 命令参考
|
|
50
|
+
|
|
51
|
+
### `pack` - 打包插件
|
|
52
|
+
|
|
53
|
+
将插件项目打包为 `.mpk` 文件。
|
|
54
|
+
|
|
55
|
+
#### 用法
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx @linyjs/cli pack [options]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### 选项
|
|
62
|
+
|
|
63
|
+
| 选项 | 简写 | 类型 | 默认值 | 说明 |
|
|
64
|
+
|------|------|------|--------|------|
|
|
65
|
+
| `--output` | `-o` | string | `.` | 输出目录 |
|
|
66
|
+
| `--name` | `-n` | string | - | 插件名称(覆盖 package.json) |
|
|
67
|
+
| `--version` | `-v` | string | - | 版本号(覆盖 package.json) |
|
|
68
|
+
| `--build` | - | boolean | true | 执行构建步骤(使用 `--no-build` 跳过) |
|
|
69
|
+
| `--manifest` | - | string | - | 自定义 manifest.json 路径 |
|
|
70
|
+
| `--verbose` | - | boolean | false | 显示详细日志 |
|
|
71
|
+
|
|
72
|
+
#### 示例
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# 基本用法
|
|
76
|
+
npx @linyjs/cli pack
|
|
77
|
+
|
|
78
|
+
# 指定输出目录
|
|
79
|
+
npx @linyjs/cli pack -o ./releases
|
|
80
|
+
|
|
81
|
+
# 跳过构建(已有 dist/)
|
|
82
|
+
npx @linyjs/cli pack --no-build
|
|
83
|
+
|
|
84
|
+
# 详细模式
|
|
85
|
+
npx @linyjs/cli pack --verbose
|
|
86
|
+
|
|
87
|
+
# 自定义版本
|
|
88
|
+
npx @linyjs/cli pack -v 1.0.0
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
#### 工作流程
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
1. 读取 package.json
|
|
95
|
+
2. 执行构建(npm run build)
|
|
96
|
+
3. 生成 manifest.json
|
|
97
|
+
4. 验证插件结构
|
|
98
|
+
5. 打包为 .mpk 文件
|
|
99
|
+
6. 显示结果统计
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### `dev` - 开发模式 ⭐
|
|
105
|
+
|
|
106
|
+
快速开发工作流:打包插件 → 安装到 extensions → 注册到 packages.json
|
|
107
|
+
|
|
108
|
+
#### 用法
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npx @linyjs/cli dev [options]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### 选项
|
|
115
|
+
|
|
116
|
+
| 选项 | 简写 | 类型 | 默认值 | 说明 |
|
|
117
|
+
|------|------|------|--------|------|
|
|
118
|
+
| `--target` | `-t` | string | 自动检测 | extensions 目录路径 |
|
|
119
|
+
| `--verbose` | - | boolean | false | 显示详细日志 |
|
|
120
|
+
|
|
121
|
+
#### 工作流程
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
1. 打包插件(生成 .mpk)
|
|
125
|
+
2. 解压到 extensions/<plugin-name>/
|
|
126
|
+
3. 读取 manifest.json
|
|
127
|
+
4. 更新 packages.json
|
|
128
|
+
5. 清理临时文件
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
#### 示例
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# 基本用法(自动检测 extensions 目录)
|
|
135
|
+
npx @linyjs/cli dev
|
|
136
|
+
|
|
137
|
+
# 指定目标目录
|
|
138
|
+
npx @linyjs/cli dev --target /path/to/ling/packages/ssr/extensions
|
|
139
|
+
|
|
140
|
+
# 详细模式
|
|
141
|
+
npx @linyjs/cli dev --verbose
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### 输出示例
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
🚀 Ling Plugin Dev Mode
|
|
148
|
+
|
|
149
|
+
✔ Packing plugin...
|
|
150
|
+
✔ Plugin packed: my-plugin-1.0.0.mpk
|
|
151
|
+
✔ Installing to extensions...
|
|
152
|
+
✔ Installed to: /path/to/extensions/my-plugin
|
|
153
|
+
✔ Registering plugin...
|
|
154
|
+
✔ Plugin registered in packages.json
|
|
155
|
+
|
|
156
|
+
✓ Development setup complete!
|
|
157
|
+
|
|
158
|
+
Plugin installed:
|
|
159
|
+
Name: my-plugin
|
|
160
|
+
Path: /path/to/extensions/my-plugin
|
|
161
|
+
Status: enabled
|
|
162
|
+
|
|
163
|
+
Next steps:
|
|
164
|
+
1. Restart SSR server:
|
|
165
|
+
cd packages/ssr && npx tsx src/demo/dev-server-with-pkg.tsx
|
|
166
|
+
2. Or use hot reload (if supported)
|
|
167
|
+
3. Test your plugin in the browser
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### 优势
|
|
171
|
+
|
|
172
|
+
✅ **一键部署** - 无需手动复制文件
|
|
173
|
+
✅ **自动注册** - 自动更新 packages.json
|
|
174
|
+
✅ **智能检测** - 自动查找 extensions 目录
|
|
175
|
+
✅ **增量更新** - 覆盖旧版本,保留配置
|
|
176
|
+
✅ **清理临时文件** - 不留下垃圾文件
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
### `init` - 创建项目 ⭐
|
|
181
|
+
|
|
182
|
+
从 npm 下载模板,快速创建新的插件项目。
|
|
183
|
+
|
|
184
|
+
#### 用法
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npx @linyjs/cli init [name]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
#### 参数
|
|
191
|
+
|
|
192
|
+
- `name` - 项目名称(默认:`my-plugin`)
|
|
193
|
+
|
|
194
|
+
#### 示例
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# 创建名为 my-blog 的插件项目
|
|
198
|
+
npx @linyjs/cli init my-blog
|
|
199
|
+
|
|
200
|
+
# 使用默认名称
|
|
201
|
+
npx @linyjs/cli init
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### 工作流程
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
1. 从 npm 下载 @linyjs/plugin-templates
|
|
208
|
+
2. 创建项目目录
|
|
209
|
+
3. 复制模板文件
|
|
210
|
+
4. 显示下一步操作指南
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
#### 输出示例
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
🚀 Ling Plugin Project Creator
|
|
217
|
+
|
|
218
|
+
✔ Downloading template from npm...
|
|
219
|
+
✔ Template downloaded
|
|
220
|
+
|
|
221
|
+
✓ Project created successfully!
|
|
222
|
+
|
|
223
|
+
Next steps:
|
|
224
|
+
1. Navigate to your project:
|
|
225
|
+
cd my-plugin
|
|
226
|
+
2. Install dependencies:
|
|
227
|
+
npm install
|
|
228
|
+
3. Start development:
|
|
229
|
+
npm run dev
|
|
230
|
+
4. Pack for deployment:
|
|
231
|
+
npx @linyjs/cli pack
|
|
232
|
+
|
|
233
|
+
Learn more:
|
|
234
|
+
- Plugin Development Guide: ...
|
|
235
|
+
- CLI Documentation: ...
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
#### 模板内容
|
|
239
|
+
|
|
240
|
+
创建的插件项目包含:
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
my-plugin/
|
|
244
|
+
├── package.json # 预配置的依赖和脚本
|
|
245
|
+
├── tsconfig.json # TypeScript 配置
|
|
246
|
+
├── README.md # 项目说明
|
|
247
|
+
├── .gitignore # Git 忽略文件
|
|
248
|
+
└── src/
|
|
249
|
+
├── server/
|
|
250
|
+
│ └── index.ts # 服务端模块示例
|
|
251
|
+
└── client/
|
|
252
|
+
└── index.tsx # 客户端模块示例
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**特性:**
|
|
256
|
+
- ✅ TypeScript 支持
|
|
257
|
+
- ✅ React 19 支持
|
|
258
|
+
- ✅ 零配置构建(使用 `@linyjs/cli`)
|
|
259
|
+
- ✅ 示例代码和注释
|
|
260
|
+
- ✅ 开箱即用
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### `validate` - 验证插件
|
|
265
|
+
|
|
266
|
+
验证 `.mpk` 文件或插件目录是否符合规范。
|
|
267
|
+
|
|
268
|
+
#### 用法
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
npx @linyjs/cli validate <path> [options]
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
#### 参数
|
|
275
|
+
|
|
276
|
+
- `path` - 插件路径(.mpk 文件或目录)
|
|
277
|
+
|
|
278
|
+
#### 选项
|
|
279
|
+
|
|
280
|
+
| 选项 | 简写 | 类型 | 默认值 | 说明 |
|
|
281
|
+
|------|------|------|--------|------|
|
|
282
|
+
| `--strict` | - | boolean | false | 严格模式(警告也报错) |
|
|
283
|
+
| `--json` | - | boolean | false | JSON 格式输出 |
|
|
284
|
+
|
|
285
|
+
#### 示例
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
# 验证目录
|
|
289
|
+
npx @linyjs/cli validate ./my-plugin
|
|
290
|
+
|
|
291
|
+
# 验证 .mpk 文件
|
|
292
|
+
npx @linyjs/cli validate my-plugin.mpk
|
|
293
|
+
|
|
294
|
+
# JSON 输出
|
|
295
|
+
npx @linyjs/cli validate my-plugin.mpk --json
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
### `init` - 初始化项目
|
|
301
|
+
|
|
302
|
+
快速创建新的插件项目模板。
|
|
303
|
+
|
|
304
|
+
#### 用法
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
npx @linyjs/cli init [name] [options]
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
#### 参数
|
|
311
|
+
|
|
312
|
+
- `name` - 项目名称(可选)
|
|
313
|
+
|
|
314
|
+
#### 选项
|
|
315
|
+
|
|
316
|
+
| 选项 | 简写 | 类型 | 默认值 | 说明 |
|
|
317
|
+
|------|------|------|--------|------|
|
|
318
|
+
| `--template` | `-t` | string | `minimal` | 项目模板 |
|
|
319
|
+
| `--yes` | `-y` | boolean | false | 跳过确认 |
|
|
320
|
+
|
|
321
|
+
#### 可用模板
|
|
322
|
+
|
|
323
|
+
- `minimal` - 最小化插件(Hello World)
|
|
324
|
+
- `full` - 完整功能插件
|
|
325
|
+
- `admin-extension` - 管理后台扩展
|
|
326
|
+
- `api-service` - 纯 API 服务
|
|
327
|
+
|
|
328
|
+
#### 示例
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
# 交互式创建
|
|
332
|
+
npx @linyjs/cli init
|
|
333
|
+
|
|
334
|
+
# 指定名称和模板
|
|
335
|
+
npx @linyjs/cli init my-blog --template=full
|
|
336
|
+
|
|
337
|
+
# 非交互模式
|
|
338
|
+
npx @linyjs/cli init my-plugin -t minimal -y
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## 💡 使用场景
|
|
344
|
+
|
|
345
|
+
### 1. 本地开发
|
|
346
|
+
|
|
347
|
+
#### 方式 A:使用 dev 命令(推荐)⭐
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
# 在插件项目中
|
|
351
|
+
cd my-plugin
|
|
352
|
+
|
|
353
|
+
# 一键打包、安装、注册
|
|
354
|
+
npx @linyjs/cli dev
|
|
355
|
+
|
|
356
|
+
# 重启 SSR 服务器即可看到效果
|
|
357
|
+
cd ../ssr && npx tsx src/demo/dev-server-with-pkg.tsx
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
**优势:**
|
|
361
|
+
- ✅ 自动打包
|
|
362
|
+
- ✅ 自动复制到 extensions
|
|
363
|
+
- ✅ 自动注册到 packages.json
|
|
364
|
+
- ✅ 清理临时文件
|
|
365
|
+
|
|
366
|
+
#### 方式 B:手动流程
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
# 在插件项目中
|
|
370
|
+
cd my-plugin
|
|
371
|
+
|
|
372
|
+
# 打包并测试
|
|
373
|
+
npx @linyjs/cli pack
|
|
374
|
+
|
|
375
|
+
# 复制到 extensions 目录
|
|
376
|
+
cp my-plugin-1.0.0.mpk ../ssr/extensions/
|
|
377
|
+
|
|
378
|
+
# 重启 SSR 服务器
|
|
379
|
+
cd ../ssr && npx tsx src/demo/dev-server-with-pkg.tsx
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### 2. CI/CD 集成
|
|
383
|
+
|
|
384
|
+
```yaml
|
|
385
|
+
# .github/workflows/build.yml
|
|
386
|
+
name: Build Plugin
|
|
387
|
+
|
|
388
|
+
on:
|
|
389
|
+
push:
|
|
390
|
+
tags:
|
|
391
|
+
- 'v*'
|
|
392
|
+
|
|
393
|
+
jobs:
|
|
394
|
+
build:
|
|
395
|
+
runs-on: ubuntu-latest
|
|
396
|
+
|
|
397
|
+
steps:
|
|
398
|
+
- uses: actions/checkout@v3
|
|
399
|
+
|
|
400
|
+
- name: Setup Node.js
|
|
401
|
+
uses: actions/setup-node@v3
|
|
402
|
+
with:
|
|
403
|
+
node-version: '18'
|
|
404
|
+
|
|
405
|
+
- name: Install dependencies
|
|
406
|
+
run: npm ci
|
|
407
|
+
|
|
408
|
+
- name: Pack plugin
|
|
409
|
+
run: npx @linyjs/cli pack --output ./dist
|
|
410
|
+
|
|
411
|
+
- name: Upload artifact
|
|
412
|
+
uses: actions/upload-artifact@v3
|
|
413
|
+
with:
|
|
414
|
+
name: plugin
|
|
415
|
+
path: ./dist/*.mpk
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 3. 批量处理
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# 打包多个插件
|
|
422
|
+
for dir in plugins/*/; do
|
|
423
|
+
cd "$dir"
|
|
424
|
+
npx @linyjs/cli pack -o ../../releases/
|
|
425
|
+
cd ../..
|
|
426
|
+
done
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## 🔧 配置
|
|
432
|
+
|
|
433
|
+
### `.lingrc.json`
|
|
434
|
+
|
|
435
|
+
可以在项目根目录创建 `.lingrc.json` 配置文件:
|
|
436
|
+
|
|
437
|
+
```json
|
|
438
|
+
{
|
|
439
|
+
"build": {
|
|
440
|
+
"command": "npm run build",
|
|
441
|
+
"outputDir": "dist"
|
|
442
|
+
},
|
|
443
|
+
"pack": {
|
|
444
|
+
"exclude": [
|
|
445
|
+
"node_modules",
|
|
446
|
+
".git",
|
|
447
|
+
"*.test.ts",
|
|
448
|
+
"*.spec.ts"
|
|
449
|
+
],
|
|
450
|
+
"include": [
|
|
451
|
+
"**/*"
|
|
452
|
+
]
|
|
453
|
+
},
|
|
454
|
+
"manifest": {
|
|
455
|
+
"customFields": {
|
|
456
|
+
"homepage": "https://example.com"
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## 🎨 输出示例
|
|
465
|
+
|
|
466
|
+
### 成功打包
|
|
467
|
+
|
|
468
|
+
```
|
|
469
|
+
📦 Ling Plugin Packer
|
|
470
|
+
|
|
471
|
+
✔ Package.json loaded
|
|
472
|
+
✔ Build completed
|
|
473
|
+
✔ Manifest generated
|
|
474
|
+
✔ Structure validated
|
|
475
|
+
✔ Plugin packed successfully
|
|
476
|
+
|
|
477
|
+
✓ Plugin ready!
|
|
478
|
+
File: /path/to/my-plugin-1.0.0.mpk
|
|
479
|
+
Size: 245.67 KB
|
|
480
|
+
Version: 1.0.0
|
|
481
|
+
|
|
482
|
+
Next steps:
|
|
483
|
+
1. Test the plugin:
|
|
484
|
+
cp /path/to/my-plugin-1.0.0.mpk /path/to/ling/packages/ssr/extensions/
|
|
485
|
+
2. Restart SSR server:
|
|
486
|
+
cd packages/ssr && npx tsx src/demo/dev-server-with-pkg.tsx
|
|
487
|
+
3. Validate the plugin:
|
|
488
|
+
npx @linyjs/cli validate /path/to/my-plugin-1.0.0.mpk
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
### 验证失败
|
|
492
|
+
|
|
493
|
+
```
|
|
494
|
+
📦 Ling Plugin Packer
|
|
495
|
+
|
|
496
|
+
✔ Package.json loaded
|
|
497
|
+
✔ Build completed
|
|
498
|
+
✔ Manifest generated
|
|
499
|
+
✗ Validation failed
|
|
500
|
+
|
|
501
|
+
Validation errors:
|
|
502
|
+
- Server entry not found: server/index.js
|
|
503
|
+
- Client entry not found: client/index.js
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
---
|
|
507
|
+
|
|
508
|
+
## 🛠️ 技术栈
|
|
509
|
+
|
|
510
|
+
- **[Cleye](https://github.com/zthh/cleye)** - 现代化 CLI 框架
|
|
511
|
+
- **[Archiver](https://github.com/archiverjs/node-archiver)** - ZIP 压缩
|
|
512
|
+
- **[Chalk](https://github.com/chalk/chalk)** - 终端着色
|
|
513
|
+
- **[Ora](https://github.com/sindresorhus/ora)** - 加载动画
|
|
514
|
+
- **[FS Extra](https://github.com/jprichardson/node-fs-extra)** - 文件系统操作
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## 📝 开发指南
|
|
519
|
+
|
|
520
|
+
### 本地开发
|
|
521
|
+
|
|
522
|
+
```bash
|
|
523
|
+
# 克隆仓库
|
|
524
|
+
git clone https://github.com/linyjs/ling.git
|
|
525
|
+
cd ling/packages/cli
|
|
526
|
+
|
|
527
|
+
# 安装依赖
|
|
528
|
+
npm install
|
|
529
|
+
|
|
530
|
+
# 构建
|
|
531
|
+
npm run build
|
|
532
|
+
|
|
533
|
+
# 测试
|
|
534
|
+
node dist/index.js pack --help
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
### 添加新命令
|
|
538
|
+
|
|
539
|
+
1. 在 `src/commands/` 目录下创建新文件
|
|
540
|
+
2. 实现命令逻辑
|
|
541
|
+
3. 在 `src/index.ts` 中注册命令
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
## ❓ 常见问题
|
|
546
|
+
|
|
547
|
+
### Q: 如何使用 dev 命令快速开发?
|
|
548
|
+
|
|
549
|
+
```bash
|
|
550
|
+
# 在插件项目目录中
|
|
551
|
+
cd my-plugin
|
|
552
|
+
|
|
553
|
+
# 一键打包、安装、注册
|
|
554
|
+
npx @linyjs/cli dev
|
|
555
|
+
|
|
556
|
+
# 如果自动检测失败,指定目标目录
|
|
557
|
+
npx @linyjs/cli dev --target /path/to/ling/packages/ssr/extensions
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
详见:[`dev` - 开发模式](#dev---开发模式-)
|
|
561
|
+
|
|
562
|
+
### Q: 如何跳过构建步骤?
|
|
563
|
+
|
|
564
|
+
```bash
|
|
565
|
+
npx @linyjs/cli pack --no-build
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
### Q: 如何指定输出目录?
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
npx @linyjs/cli pack -o ./releases
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### Q: 打包后文件在哪里?
|
|
575
|
+
|
|
576
|
+
默认在当前目录,文件名格式为 `{name}-{version}.mpk`。
|
|
577
|
+
|
|
578
|
+
### Q: 如何验证插件?
|
|
579
|
+
|
|
580
|
+
```bash
|
|
581
|
+
npx @linyjs/cli validate my-plugin.mpk
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
## 📄 License
|
|
587
|
+
|
|
588
|
+
MIT
|
|
589
|
+
|
|
590
|
+
---
|
|
591
|
+
|
|
592
|
+
## 🔗 相关链接
|
|
593
|
+
|
|
594
|
+
- [Ling 框架文档](https://github.com/linyjs/ling)
|
|
595
|
+
- [插件开发指南](../../spec/插件开发指南.md)
|
|
596
|
+
- [问题反馈](https://github.com/linyjs/ling/issues)
|