skill-base 2.0.4 → 2.0.6
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 +177 -115
- package/bin/skill-base.js +7 -0
- package/package.json +3 -1
- package/src/cappy.js +416 -0
- package/src/database.js +11 -0
- package/src/index.js +87 -24
- package/src/middleware/auth.js +96 -32
- package/src/routes/auth.js +1 -1
- package/src/routes/skills.js +10 -5
- package/src/utils/zip.js +15 -4
- package/static/android-chrome-192x192.png +0 -0
- package/static/android-chrome-512x512.png +0 -0
- package/static/apple-touch-icon.png +0 -0
- package/static/assets/index-BgwubB87.css +1 -0
- package/static/assets/index-DBHCo8Mz.js +230 -0
- package/static/favicon-16x16.png +0 -0
- package/static/favicon-32x32.png +0 -0
- package/static/favicon.ico +0 -0
- package/static/favicon.svg +14 -0
- package/static/index.html +18 -248
- package/static/site.webmanifest +1 -0
- package/static/admin/users.html +0 -593
- package/static/cli-code.html +0 -203
- package/static/css/.gitkeep +0 -0
- package/static/css/style.css +0 -1567
- package/static/diff.html +0 -466
- package/static/file.html +0 -443
- package/static/js/.gitkeep +0 -0
- package/static/js/admin/users.js +0 -346
- package/static/js/app.js +0 -508
- package/static/js/auth.js +0 -151
- package/static/js/cli-code.js +0 -184
- package/static/js/collaborators.js +0 -283
- package/static/js/diff.js +0 -540
- package/static/js/file.js +0 -619
- package/static/js/i18n.js +0 -739
- package/static/js/index.js +0 -168
- package/static/js/publish.js +0 -718
- package/static/js/settings.js +0 -124
- package/static/js/setup.js +0 -157
- package/static/js/skill.js +0 -808
- package/static/login.html +0 -82
- package/static/publish.html +0 -459
- package/static/settings.html +0 -163
- package/static/setup.html +0 -101
- package/static/skill.html +0 -851
package/README.md
CHANGED
|
@@ -1,183 +1,245 @@
|
|
|
1
|
-
# Skill Base
|
|
1
|
+
# 📦 Skill Base
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/skill-base)
|
|
4
|
+
[](https://nodejs.org/)
|
|
5
|
+
[](LICENSE)
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
> **专为 200 人以下小团队打造的轻量级 AI Agent Skill 私有化管理平台。**
|
|
8
|
+
> 告别跨项目复制粘贴提示词,让你的 Cursor、OpenClaw、Cline 等 AI 助手瞬间掌握团队内部的最佳实践与业务规范。极简部署,开箱即用。
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
- **版本控制** - 每个 Skill 支持多版本管理
|
|
9
|
-
- **协作者管理** - 支持多人协作维护 Skill
|
|
10
|
-
- **双端支持** - Web 界面 + CLI 命令行工具
|
|
10
|
+
---
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 🤔 什么是 Agent Skill?
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
在 AI 辅助开发时代,AI 虽然懂通用代码,但**不懂你们公司的业务上下文**。
|
|
15
|
+
如果让 AI 直接写一个“用户列表”,它可能会用原生的 `fetch` 和基础的 `table` 标签。但实际上,你们团队的规范可能是:
|
|
16
|
+
1. 必须使用内部封装的 `@/utils/request.js` 发起请求。
|
|
17
|
+
2. 必须使用团队魔改版的 `<ProTable>` 组件。
|
|
18
|
+
3. 时间格式化必须调用内部的 `formatDate` 方法。
|
|
15
19
|
|
|
16
|
-
|
|
17
|
-
# 直接运行(默认端口 8000)
|
|
18
|
-
npx skill-base
|
|
20
|
+
**Agent Skill(技能包)就是用来解决这个问题的。** 它是一份结构化的文档(包含提示词约束、上下文规范和代码示例),通过把这些规则交给 AI,让 AI 不再“瞎造轮子”,而是严格按照你们团队的规矩写代码。
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
npx skill-base -p 3000
|
|
22
|
+
---
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
npx skill-base --host 127.0.0.1
|
|
24
|
+
## 💡 为什么需要 Skill Base?
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
npx skill-base -d ./data
|
|
26
|
+
目前管理这些 AI 上下文,团队通常面临两大痛点,这也正是 Skill Base 诞生的原因:
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
### 1. 公共平台(如 Clawhub)不适合存放公司私有业务
|
|
29
|
+
OpenClaw 等框架非常强大,Clawhub 上也有很多优秀的开源 Skill。但涉及**公司内部接口约定、私有 UI 组件库用法、核心业务逻辑**的 Skill,显然不能发布到公共网络。
|
|
30
|
+
👉 **Skill Base 是 OpenClaw 等工具完美的“私有化伴侣”**,就像私有 npm 源(Verdaccio)一样,专门用于沉淀和分发团队内部的私有技能包。
|
|
31
|
+
|
|
32
|
+
### 2. 告别四处复制粘贴 `.cursorrules`
|
|
33
|
+
很多团队目前通过在每个代码仓库里放一个 `.cursorrules` 或共享文档来同步 AI 规范。一旦规范更新(比如组件库升级了),需要手动去几十个仓库里改,极难维护。
|
|
34
|
+
👉 **Skill Base 引入了包管理的理念**。只需要 `skb install team-vue-rules`,就能将最新的规范同步到当前项目,支持版本控制与一键更新。
|
|
35
|
+
|
|
36
|
+
### 3. 拒绝重型架构,专为小团队设计
|
|
37
|
+
部署一套带 MySQL、Redis 的企业级知识库太重了。Skill Base 采用纯 Node.js + SQLite 架构,**一行 `npx` 命令即可启动**,没有任何运维心智负担。
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## ✨ 核心特性
|
|
32
42
|
|
|
33
|
-
|
|
43
|
+
- ⚡ **零配置启动**:一行 `npx skill-base` 即可运行,内置 SQLite,无需额外数据库服务。
|
|
44
|
+
- 🔄 **如同 npm 般的体验**:提供 `skb` CLI 工具,`install / update / publish` 符合开发者直觉。
|
|
45
|
+
- 🔒 **私有化安全**:所有团队规范、业务逻辑数据均保存在本地/私有服务器。
|
|
46
|
+
- 📦 **版本控制**:支持 Skill 的多版本管理,规范迭代有迹可循。
|
|
47
|
+
- 🌐 **双端支持**:可视化的 Web 管理后台 + 高效的 CLI 命令行。
|
|
34
48
|
|
|
35
|
-
|
|
49
|
+
---
|
|
36
50
|
|
|
37
|
-
|
|
38
|
-
2. 浏览或搜索需要的 Skill
|
|
39
|
-
3. 点击 Skill 查看详情和历史版本
|
|
40
|
-
4. 点击下载按钮获取 Skill 文件
|
|
51
|
+
## 💡 设计哲学:为“随时废弃”而构建 (Build to Delete)
|
|
41
52
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
2. 选择包含 `SKILL.md` 的文件夹
|
|
45
|
-
3. 填写版本说明后提交
|
|
53
|
+
业界关于 AI 工程有一个著名的洞察:**车速越快,护栏越重要。**
|
|
54
|
+
模型(引擎)越强大,团队越需要清晰的 Harness(架构约束、工具集)来防止 AI 跑偏。
|
|
46
55
|
|
|
47
|
-
|
|
56
|
+
但我们深知,AI 进化的速度太快了。今天极度复杂的 Prompt 技巧,半年后可能就会被新一代模型原生的推理能力淘汰。
|
|
48
57
|
|
|
49
|
-
|
|
58
|
+
因此,**Skill Base 坚决贯彻 "Start Simple. Build to Delete" 的理念:**
|
|
59
|
+
1. **纯粹的搬运工**:我们不做重型的 Agent 编排框架,不与任何特定的大模型绑定。我们只是团队上下文的“高速快递网络”。
|
|
60
|
+
2. **极轻量、模块化**:我们鼓励团队沉淀“微型技能包”(Micro-Skills),用完即弃,随时拆卸,绝不产生历史包袱。
|
|
61
|
+
3. **零技术债**:无数据库依赖(内置 SQLite),无微服务。今天 `npx` 跑起来,明天删掉目录即无痕销毁。
|
|
62
|
+
|
|
63
|
+
我们不预测 6 个月后的 AI 长什么样,但我们确保:**无论 AI 怎么变,Skill Base 永远是你团队同步最佳实践的最快通道。**
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 🚀 快速启动服务端
|
|
68
|
+
|
|
69
|
+
要求 Node.js >= 18.0.0。最简单的启动方式是直接使用 `npx`:
|
|
50
70
|
|
|
51
71
|
```bash
|
|
52
|
-
|
|
72
|
+
# 推荐做法:指定数据目录启动(方便数据持久化和备份)
|
|
73
|
+
npx skill-base -d ./skill-data -p 8000
|
|
53
74
|
```
|
|
54
75
|
|
|
55
|
-
|
|
56
|
-
|
|
76
|
+
**其他启动选项:**
|
|
57
77
|
```bash
|
|
58
|
-
|
|
78
|
+
npx skill-base # 默认启动 (端口 8000, 数据存放在 npm 缓存)
|
|
79
|
+
npx skill-base --host 127.0.0.1 # 仅限本地访问,增强安全性
|
|
80
|
+
npx skill-base --base-path /skills/ # 部署在子路径下 (例如: /skills/)
|
|
59
81
|
```
|
|
60
82
|
|
|
61
|
-
|
|
83
|
+
**完整参数说明:**
|
|
84
|
+
| 参数 | 简写 | 说明 | 默认值 |
|
|
85
|
+
|------|------|------|--------|
|
|
86
|
+
| `--port` | `-p` | 指定端口号 | 8000 |
|
|
87
|
+
| `--host` | `-h` | 指定监听地址 | 0.0.0.0 |
|
|
88
|
+
| `--data-dir` | `-d` | 指定数据目录 | 包内 data/ |
|
|
89
|
+
| `--base-path` | - | 指定部署前缀 | / |
|
|
62
90
|
|
|
63
|
-
|
|
64
|
-
# 登录
|
|
65
|
-
skb login
|
|
91
|
+
> 🔐 **首次运行须知**:系统启动后,首次访问 Web 端将自动跳转至**初始化页面**,请根据提示设置系统管理员账号与密码。
|
|
66
92
|
|
|
67
|
-
|
|
68
|
-
skb search vue
|
|
93
|
+
---
|
|
69
94
|
|
|
70
|
-
|
|
71
|
-
skb install vue-best-practices
|
|
72
|
-
skb install vue-best-practices@v20260115.120000 # 指定版本
|
|
73
|
-
skb install vue-best-practices -d ./my-skills # 指定目录
|
|
95
|
+
## 💻 客户端使用指南 (CLI & Web)
|
|
74
96
|
|
|
75
|
-
|
|
76
|
-
skb update vue-best-practices
|
|
97
|
+
### ⌨️ CLI 命令行工具 (推荐极客使用)
|
|
77
98
|
|
|
78
|
-
|
|
79
|
-
|
|
99
|
+
**1. 安装 CLI:**
|
|
100
|
+
```bash
|
|
101
|
+
npm install -g skill-base-cli
|
|
102
|
+
```
|
|
80
103
|
|
|
81
|
-
|
|
82
|
-
|
|
104
|
+
**2. 配置你的私有服务地址:**
|
|
105
|
+
```bash
|
|
106
|
+
skb init -s http://your-team-server
|
|
83
107
|
```
|
|
84
108
|
|
|
85
|
-
|
|
109
|
+
**3. 像用 npm 一样管理你的 AI Skills:**
|
|
110
|
+
```bash
|
|
111
|
+
# 账号操作
|
|
112
|
+
skb login
|
|
86
113
|
|
|
87
|
-
|
|
114
|
+
# 搜索与安装
|
|
115
|
+
skb search vue # 搜索
|
|
116
|
+
skb install vue-best-practices # 安装最新版
|
|
117
|
+
skb install vue-best-practices@v20260115 # 安装指定版本
|
|
118
|
+
skb install vue-best-practices -d ./.cursor/rules # 安装到 Cursor 规则目录
|
|
88
119
|
|
|
89
|
-
|
|
120
|
+
# 发布团队内部的新 Skill
|
|
121
|
+
skb publish ./my-business-skill --changelog "新增了报表组件的使用规范"
|
|
122
|
+
```
|
|
90
123
|
|
|
91
|
-
|
|
124
|
+
**🤖 深度集成各大主流 AI IDE:**
|
|
92
125
|
|
|
126
|
+
不用去记不同 AI 工具复杂的规则文件路径!`skb` 提供了智能的 IDE 适配,一键将团队规范直接注入你的工作流:
|
|
93
127
|
```bash
|
|
94
|
-
#
|
|
95
|
-
|
|
128
|
+
# 交互式安装,根据提示选择即可
|
|
129
|
+
skb install my-team-rules
|
|
96
130
|
|
|
97
|
-
#
|
|
98
|
-
|
|
131
|
+
# 或者使用快捷参数,直接注入当前项目的 AI 上下文
|
|
132
|
+
skb install team-vue-rules --ide cursor # 自动生成到 .cursor/rules/
|
|
133
|
+
skb install team-vue-rules --ide qoder # 自动生成到 .qoder/skills/
|
|
134
|
+
skb install team-vue-rules --ide copilot # 自动生成到 .github/instructions/
|
|
99
135
|
|
|
100
|
-
#
|
|
101
|
-
|
|
136
|
+
# 支持全局安装通用素养规则
|
|
137
|
+
skb install git-commit-rules --ide cursor --global
|
|
102
138
|
```
|
|
103
139
|
|
|
104
|
-
###
|
|
140
|
+
### 🌐 Web 端操作
|
|
141
|
+
对于不习惯命令行的团队成员,可以直接访问浏览器:
|
|
142
|
+
1. **浏览与检索**:可视化查看所有内部沉淀的 Skill 及其历史版本。
|
|
143
|
+
2. **下载使用**:一键下载,直接拖入项目。
|
|
144
|
+
3. **极简发布**:将包含 `SKILL.md` 的文件夹(或 zip 包)**直接拖拽**到网页上传区域,即可完成发布。
|
|
105
145
|
|
|
106
|
-
|
|
146
|
+
---
|
|
107
147
|
|
|
108
|
-
|
|
148
|
+
## 📝 如何编写一个好用的 Skill?
|
|
109
149
|
|
|
110
|
-
|
|
150
|
+
在要发布的目录中创建一个 `SKILL.md`,Skill Base 会自动解析它。
|
|
111
151
|
|
|
112
|
-
|
|
113
|
-
docker build -t skill-base .
|
|
114
|
-
docker run -p 8000:8000 -v ./data:/app/data skill-base
|
|
115
|
-
```
|
|
152
|
+
### Frontmatter 规范
|
|
116
153
|
|
|
117
|
-
|
|
154
|
+
推荐使用 YAML frontmatter 明确定义元数据:
|
|
118
155
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
├── static/ # Web 前端
|
|
124
|
-
├── data/ # 数据存储
|
|
125
|
-
└── docs/ # 文档
|
|
126
|
-
```
|
|
156
|
+
| 字段 | 必需 | 说明 |
|
|
157
|
+
|------|------|------|
|
|
158
|
+
| `name` | 推荐 | Skill 的唯一标识符,建议使用 kebab-case |
|
|
159
|
+
| `description` | 推荐 | 描述 Skill 用途,**务必包含触发关键词** |
|
|
127
160
|
|
|
128
|
-
|
|
161
|
+
> 💡 如果省略 frontmatter,系统会自动使用第一个 `#` 标题作为 name,标题后第一段文本作为 description。
|
|
129
162
|
|
|
130
|
-
###
|
|
163
|
+
### 触发关键词写法
|
|
131
164
|
|
|
165
|
+
在 `description` 中使用自然语言描述触发条件,AI 助手会据此判断何时激活该 Skill:
|
|
166
|
+
|
|
167
|
+
```yaml
|
|
168
|
+
description: "Triggers on requests to create Vue admin pages, write ProForm components, or any mention of internal API standards."
|
|
132
169
|
```
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
170
|
+
|
|
171
|
+
### 互斥与互补关系
|
|
172
|
+
|
|
173
|
+
当多个 Skill 可能同时触发时,在正文开头声明它们的关系:
|
|
174
|
+
|
|
175
|
+
```markdown
|
|
176
|
+
> 本技能与 `team-api-standards` 互补——接口请求规范仍遵循该技能。
|
|
177
|
+
> 本技能与 `legacy-vue2-rules` 互斥——请勿同时安装。
|
|
140
178
|
```
|
|
141
179
|
|
|
142
|
-
###
|
|
180
|
+
### 完整示例
|
|
143
181
|
|
|
144
|
-
|
|
182
|
+
```markdown
|
|
183
|
+
---
|
|
184
|
+
name: team-vue3-admin
|
|
185
|
+
description: "Internal Vue3 admin best practices for R&D Team 1. Triggers on requests to create Vue admin pages, write ProForm components, use internal UI library, or any mention of ProTable, useRequest, or internal component standards."
|
|
186
|
+
---
|
|
145
187
|
|
|
146
|
-
|
|
147
|
-
# 启动时指定数据目录
|
|
148
|
-
npx skill-base -d ./my-data
|
|
188
|
+
# 内部 Vue3 管理后台最佳实践
|
|
149
189
|
|
|
150
|
-
|
|
151
|
-
rm -rf ./my-data
|
|
152
|
-
```
|
|
190
|
+
> 本技能与 `team-api-standards` 互补——接口请求规范仍遵循该技能。
|
|
153
191
|
|
|
154
|
-
|
|
192
|
+
研发一部针对中后台项目的标准 AI 提示词规范,包含组件库使用限制和接口请求标准。
|
|
155
193
|
|
|
156
|
-
|
|
157
|
-
npx clear-npx-cache
|
|
158
|
-
# 或手动删除
|
|
159
|
-
rm -rf ~/.npm/_npx/
|
|
160
|
-
```
|
|
194
|
+
## 🎯 核心原则
|
|
161
195
|
|
|
162
|
-
|
|
196
|
+
- 必须使用 TypeScript。
|
|
197
|
+
- 所有的表单组件必须使用 `@/components/ProForm`,严禁使用原生 el-form。
|
|
198
|
+
- 表格展示必须使用 `<ProTable>`,禁止原生 table 或 el-table。
|
|
163
199
|
|
|
164
|
-
|
|
200
|
+
## 📦 接口请求规范
|
|
165
201
|
|
|
166
|
-
-
|
|
167
|
-
-
|
|
202
|
+
- 引入:`import { useRequest } from '@/utils/request'`
|
|
203
|
+
- 示例:
|
|
204
|
+
\`\`\`typescript
|
|
205
|
+
const { data, loading } = await useRequest<UserList>('/api/v1/users', { method: 'GET' })
|
|
206
|
+
\`\`\`
|
|
168
207
|
|
|
169
|
-
|
|
208
|
+
## ✅ 质量检查清单
|
|
170
209
|
|
|
171
|
-
|
|
172
|
-
|
|
210
|
+
- [ ] 使用 TypeScript 严格模式
|
|
211
|
+
- [ ] 表单使用 ProForm 组件
|
|
212
|
+
- [ ] 表格使用 ProTable 组件
|
|
213
|
+
- [ ] 接口请求使用 useRequest
|
|
214
|
+
- [ ] 时间格式化使用 formatDate
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
*将上述文件夹通过 `skb publish` 发布后,你的团队成员就可以愉快地 `skb install` 并将它喂给 Cursor 或 OpenClaw 了!*
|
|
173
218
|
|
|
174
|
-
|
|
219
|
+
---
|
|
175
220
|
|
|
176
|
-
##
|
|
221
|
+
## 🛠 生产环境私有化部署
|
|
177
222
|
|
|
178
|
-
|
|
223
|
+
### Docker 部署(推荐)
|
|
224
|
+
对于企业内部服务器,使用 Docker 部署最为稳妥:
|
|
225
|
+
```bash
|
|
226
|
+
docker build -t skill-base .
|
|
227
|
+
# 将本地的 ./data 目录挂载到容器内实现数据持久化
|
|
228
|
+
docker run -d -p 8000:8000 -v $(pwd)/data:/data --name skill-base-server skill-base
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### 数据存储说明
|
|
232
|
+
如果指定了 `-d ./data`,数据结构如下,非常便于直接打包备份:
|
|
233
|
+
```text
|
|
234
|
+
data/
|
|
235
|
+
├── skills.db # SQLite 核心数据库
|
|
236
|
+
├── skills.db-wal # WAL 日志缓存
|
|
237
|
+
└── skills/ # 各 Skill 的 zip 包目录
|
|
238
|
+
└── <skill-id>/
|
|
239
|
+
└── v20260326.120000.zip
|
|
179
240
|
```
|
|
180
241
|
|
|
181
|
-
|
|
242
|
+
---
|
|
182
243
|
|
|
183
|
-
|
|
244
|
+
## 🤝 参与贡献
|
|
245
|
+
本项目基于 [MIT License](LICENSE) 开源,致力于打造最轻量、最好用的团队 AI 资产管理工具。欢迎提交 Issue 和 Pull Request 共建!
|
package/bin/skill-base.js
CHANGED
|
@@ -13,6 +13,7 @@ const args = process.argv.slice(2);
|
|
|
13
13
|
let port = 8000;
|
|
14
14
|
let host = '0.0.0.0';
|
|
15
15
|
let dataDir = null;
|
|
16
|
+
let basePath = '/';
|
|
16
17
|
|
|
17
18
|
for (let i = 0; i < args.length; i++) {
|
|
18
19
|
if ((args[i] === '-p' || args[i] === '--port') && args[i + 1]) {
|
|
@@ -24,6 +25,9 @@ for (let i = 0; i < args.length; i++) {
|
|
|
24
25
|
} else if ((args[i] === '-d' || args[i] === '--data-dir') && args[i + 1]) {
|
|
25
26
|
dataDir = path.resolve(args[i + 1]);
|
|
26
27
|
i++;
|
|
28
|
+
} else if (args[i] === '--base-path' && args[i + 1]) {
|
|
29
|
+
basePath = args[i + 1];
|
|
30
|
+
i++;
|
|
27
31
|
} else if (args[i] === '--help') {
|
|
28
32
|
console.log(`
|
|
29
33
|
Skill Base - 内网轻量版 Skill 管理平台
|
|
@@ -35,6 +39,7 @@ Options:
|
|
|
35
39
|
-p, --port <port> 指定端口号 (默认: 8000)
|
|
36
40
|
-h, --host <host> 指定监听地址 (默认: 0.0.0.0)
|
|
37
41
|
-d, --data-dir <path> 指定数据目录 (默认: 包内 data/)
|
|
42
|
+
--base-path <path> 指定部署前缀 (默认: /,例如: /skills/)
|
|
38
43
|
--help 显示帮助信息
|
|
39
44
|
--version 显示版本号
|
|
40
45
|
|
|
@@ -44,6 +49,7 @@ Examples:
|
|
|
44
49
|
npx skill-base --host 127.0.0.1 # 仅本地访问
|
|
45
50
|
npx skill-base -d ./data # 数据存储到当前目录的 data 文件夹
|
|
46
51
|
npx skill-base -d . -p 3000 # 数据存储到当前目录
|
|
52
|
+
npx skill-base --base-path /skills/ # 部署在子路径下
|
|
47
53
|
`);
|
|
48
54
|
process.exit(0);
|
|
49
55
|
} else if (args[i] === '--version') {
|
|
@@ -56,6 +62,7 @@ Examples:
|
|
|
56
62
|
// 设置环境变量
|
|
57
63
|
process.env.PORT = port;
|
|
58
64
|
process.env.HOST = host;
|
|
65
|
+
process.env.APP_BASE_PATH = basePath;
|
|
59
66
|
|
|
60
67
|
// 设置数据目录
|
|
61
68
|
if (dataDir) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skill-base",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.6",
|
|
4
4
|
"description": "Skill Base - 内网轻量版 Skill 管理平台",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
"scripts": {
|
|
16
16
|
"start": "node src/index.js",
|
|
17
17
|
"dev": "nodemon src/index.js",
|
|
18
|
+
"build": "cd web && pnpm build",
|
|
19
|
+
"web:dev": "cd web && pnpm dev",
|
|
18
20
|
"test": "node --test tests/**/*.test.js"
|
|
19
21
|
},
|
|
20
22
|
"dependencies": {
|