skill-base 2.0.1 → 2.0.4

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 CHANGED
@@ -22,8 +22,16 @@ npx skill-base -p 3000
22
22
 
23
23
  # 仅本地访问
24
24
  npx skill-base --host 127.0.0.1
25
+
26
+ # 指定数据目录(推荐,方便管理数据)
27
+ npx skill-base -d ./data
28
+
29
+ # 数据存储到当前目录
30
+ npx skill-base -d .
25
31
  ```
26
32
 
33
+ > **提示**:使用 `-d` 指定数据目录后,数据库和 Skills 文件会存储在指定路径,而非 npm 缓存目录。这样更方便数据备份和管理。
34
+
27
35
  ### Web 端使用
28
36
 
29
37
  1. 访问平台首页,注册/登录账号
@@ -117,6 +125,40 @@ skill-base/
117
125
  └── docs/ # 文档
118
126
  ```
119
127
 
128
+ ## 数据存储
129
+
130
+ ### 数据目录结构
131
+
132
+ ```
133
+ data/
134
+ ├── skills.db # SQLite 数据库
135
+ ├── skills.db-wal # WAL 日志
136
+ ├── skills.db-shm # 共享内存文件
137
+ └── <skill-id>/ # 每个 Skill 的 ZIP 文件
138
+ ├── v20260326.120000.zip
139
+ └── v20260326.150000.zip
140
+ ```
141
+
142
+ ### 删除数据
143
+
144
+ **方法 1:指定数据目录后删除**
145
+
146
+ ```bash
147
+ # 启动时指定数据目录
148
+ npx skill-base -d ./my-data
149
+
150
+ # 删除数据(停止服务后)
151
+ rm -rf ./my-data
152
+ ```
153
+
154
+ **方法 2:清理 npx 缓存(未指定 -d 时)**
155
+
156
+ ```bash
157
+ npx clear-npx-cache
158
+ # 或手动删除
159
+ rm -rf ~/.npm/_npx/
160
+ ```
161
+
120
162
  ## SKILL.md 规范
121
163
 
122
164
  每个 Skill 必须包含 `SKILL.md` 文件,平台会自动解析:
package/bin/skill-base.js CHANGED
@@ -6,11 +6,13 @@
6
6
  */
7
7
 
8
8
  const path = require('path');
9
+ const fs = require('fs');
9
10
 
10
11
  // 解析命令行参数
11
12
  const args = process.argv.slice(2);
12
13
  let port = 8000;
13
14
  let host = '0.0.0.0';
15
+ let dataDir = null;
14
16
 
15
17
  for (let i = 0; i < args.length; i++) {
16
18
  if ((args[i] === '-p' || args[i] === '--port') && args[i + 1]) {
@@ -19,6 +21,9 @@ for (let i = 0; i < args.length; i++) {
19
21
  } else if ((args[i] === '-h' || args[i] === '--host') && args[i + 1]) {
20
22
  host = args[i + 1];
21
23
  i++;
24
+ } else if ((args[i] === '-d' || args[i] === '--data-dir') && args[i + 1]) {
25
+ dataDir = path.resolve(args[i + 1]);
26
+ i++;
22
27
  } else if (args[i] === '--help') {
23
28
  console.log(`
24
29
  Skill Base - 内网轻量版 Skill 管理平台
@@ -27,15 +32,18 @@ Usage:
27
32
  npx skill-base [options]
28
33
 
29
34
  Options:
30
- -p, --port <port> 指定端口号 (默认: 8000)
31
- -h, --host <host> 指定监听地址 (默认: 0.0.0.0)
32
- --help 显示帮助信息
33
- --version 显示版本号
35
+ -p, --port <port> 指定端口号 (默认: 8000)
36
+ -h, --host <host> 指定监听地址 (默认: 0.0.0.0)
37
+ -d, --data-dir <path> 指定数据目录 (默认: 包内 data/)
38
+ --help 显示帮助信息
39
+ --version 显示版本号
34
40
 
35
41
  Examples:
36
- npx skill-base # 启动服务 (端口 8000)
37
- npx skill-base -p 3000 # 使用端口 3000
38
- npx skill-base --host 127.0.0.1 # 仅本地访问
42
+ npx skill-base # 启动服务 (端口 8000)
43
+ npx skill-base -p 3000 # 使用端口 3000
44
+ npx skill-base --host 127.0.0.1 # 仅本地访问
45
+ npx skill-base -d ./data # 数据存储到当前目录的 data 文件夹
46
+ npx skill-base -d . -p 3000 # 数据存储到当前目录
39
47
  `);
40
48
  process.exit(0);
41
49
  } else if (args[i] === '--version') {
@@ -49,5 +57,16 @@ Examples:
49
57
  process.env.PORT = port;
50
58
  process.env.HOST = host;
51
59
 
60
+ // 设置数据目录
61
+ if (dataDir) {
62
+ // 确保目录存在
63
+ if (!fs.existsSync(dataDir)) {
64
+ fs.mkdirSync(dataDir, { recursive: true });
65
+ }
66
+ process.env.DATA_DIR = dataDir;
67
+ process.env.DATABASE_PATH = path.join(dataDir, 'skills.db');
68
+ console.log(`Data directory: ${dataDir}`);
69
+ }
70
+
52
71
  // 启动服务
53
72
  require('../src/index.js');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skill-base",
3
- "version": "2.0.1",
3
+ "version": "2.0.4",
4
4
  "description": "Skill Base - 内网轻量版 Skill 管理平台",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -18,13 +18,13 @@
18
18
  "test": "node --test tests/**/*.test.js"
19
19
  },
20
20
  "dependencies": {
21
- "fastify": "^4.26.0",
22
- "@fastify/static": "^6.12.0",
23
- "@fastify/multipart": "^8.0.0",
24
- "@fastify/cookie": "^9.3.0",
25
- "@fastify/cors": "^9.0.0",
26
- "better-sqlite3": "^9.4.0",
21
+ "@fastify/cookie": "^11.0.2",
22
+ "@fastify/cors": "^11.2.0",
23
+ "@fastify/multipart": "^9.4.0",
24
+ "@fastify/static": "^9.0.0",
27
25
  "bcryptjs": "^2.4.3",
26
+ "better-sqlite3": "^12.8.0",
27
+ "fastify": "^5.8.4",
28
28
  "uuid": "^9.0.0"
29
29
  },
30
30
  "devDependencies": {
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const path = require('path');
2
2
  const fastify = require('fastify')({
3
- logger: true,
3
+ logger: false,
4
4
  // 设置 body 大小限制为 100MB(支持大 zip 上传)
5
5
  bodyLimit: 100 * 1024 * 1024
6
6
  });
@@ -80,7 +80,7 @@ async function start() {
80
80
  await fastify.listen({ port: PORT, host: HOST });
81
81
  console.log(`Skill Base server running at http://${HOST}:${PORT}`);
82
82
  } catch (err) {
83
- fastify.log.error(err);
83
+ console.error(err);
84
84
  process.exit(1);
85
85
  }
86
86
  }