@ibotor/smart-trellis 0.5.22 → 0.5.23
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 +238 -145
- package/dist/cli/smart.js +3 -1
- package/dist/cli/smart.js.map +1 -1
- package/dist/commands/smart-init.d.ts +4 -1
- package/dist/commands/smart-init.d.ts.map +1 -1
- package/dist/commands/smart-init.js +96 -1
- package/dist/commands/smart-init.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,152 +1,192 @@
|
|
|
1
1
|
# Smart Trellis
|
|
2
2
|
|
|
3
|
-
`smart-trellis`
|
|
3
|
+
`smart-trellis` 是 Trellis 的智能初始化入口。它不替换 Trellis 的核心能力,而是在 `trellis init` 之前帮你做默认选择,减少初始化时的重复确认。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
这个 npm 包同时提供三个命令:
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
```text
|
|
8
|
+
smart-trellis # 智能初始化入口
|
|
9
|
+
trellis # 原 Trellis CLI
|
|
10
|
+
tl # trellis 的短别名
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
当前 npm latest:`0.5.22`。
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- 自动开启非交互初始化,跳过 monorepo 和 spec source 的大量选择。
|
|
17
|
-
- 自动检测 monorepo 项目结构。
|
|
18
|
-
- 自动检测开发者名称,优先使用 `--user`,其次使用 `git config user.name`,最后使用系统用户名。
|
|
19
|
-
- 默认工具为 `codex,cursor`。
|
|
20
|
-
- 如果没有传 `--tools`、没有传具体工具参数、也没有传 `--yes`,只会弹出一次工具选择。
|
|
15
|
+
## 0.5.20 以来的功能迭代
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
| 版本 | 新增能力 | 解决的问题 | 怎么使用 |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| `0.5.20` | `trellis.activation_mode` | 有些团队希望 Trellis 不要自动接管普通开发对话,只在明确要求时启动 | 新项目用 `--trellis-activation explicit`;旧项目运行 `trellis update` 后在 `.trellis/config.yaml` 设置 |
|
|
20
|
+
| `0.5.21` | `trellis-joint-debugger` 联调入口 | 前后端联调时,只给 Apifox 链接就能进入接口分析流程 | Cursor 用 `/trellis-joint-debugger`,Codex / `.agents/skills` 用 `$trellis-joint-debugger` |
|
|
21
|
+
| `0.5.22` | Apifox Web API 联调流程 + 用户级 token 存储 | 自动解析 Apifox 接口详情、schema、入参/出参,并避免每个项目重复配置 token | 运行 `python3 ./.trellis/scripts/apifox_token.py save` 保存 token |
|
|
22
|
+
| 当前工作区 | `smart-trellis init` 生成目录写入 `.gitignore` 的多选项 | 初始化后可选择把 `.trellis/` 和 AI 工具配置目录加入 `.gitignore`,默认全选且不重复添加 | 交互初始化时选择目录;脚本模式用 `--gitignore-config` 或 `--no-gitignore-config` |
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
| --- | --- | --- |
|
|
26
|
-
| `trellis init` | 需要完整手动控制 Trellis 初始化选项 | 会询问 monorepo、每个包的 spec source、工具等 |
|
|
27
|
-
| `smart-trellis init` | 希望快速初始化一个项目,并保留 Trellis 原完整结构 | 通常只确认工具,或完全无交互 |
|
|
24
|
+
上面这些都是补丁级增强,没有破坏性迁移。已初始化项目通常只需要:
|
|
28
25
|
|
|
29
|
-
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g @ibotor/smart-trellis@latest
|
|
28
|
+
trellis update
|
|
29
|
+
```
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## 快速开始
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
新设备安装:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
npm install -g @ibotor/smart-trellis
|
|
36
|
+
npm install -g @ibotor/smart-trellis@latest
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
进入项目根目录:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
smart-trellis init
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
默认交互流程:
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
1. 选择要配置的 AI 工具。
|
|
48
|
+
2. 选择要加入 `.gitignore` 的生成目录,默认全选。
|
|
49
|
+
3. 选择 Trellis activation mode。
|
|
50
|
+
4. 调用原始 `trellis init`,生成 `.trellis/`、平台配置目录和 `AGENTS.md`。
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
如果你希望完全无交互,并使用默认工具 `codex,cursor`:
|
|
52
53
|
|
|
53
54
|
```bash
|
|
54
|
-
|
|
55
|
+
smart-trellis init --yes
|
|
55
56
|
```
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
`--yes` 会使用默认工具,并把 `.trellis/` 和默认工具生成的配置目录写入 `.gitignore`。
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
## 常用命令
|
|
61
|
+
|
|
62
|
+
### 指定工具
|
|
63
|
+
|
|
64
|
+
逗号形式:
|
|
60
65
|
|
|
61
66
|
```bash
|
|
62
|
-
smart-trellis init
|
|
67
|
+
smart-trellis init --tools codex,cursor,claude
|
|
63
68
|
```
|
|
64
69
|
|
|
65
|
-
|
|
70
|
+
独立参数形式:
|
|
66
71
|
|
|
67
72
|
```bash
|
|
68
|
-
smart-trellis init --
|
|
73
|
+
smart-trellis init --codex --cursor --claude
|
|
69
74
|
```
|
|
70
75
|
|
|
71
|
-
|
|
76
|
+
当前支持的工具名:
|
|
72
77
|
|
|
73
|
-
|
|
74
|
-
|
|
78
|
+
```text
|
|
79
|
+
claude
|
|
80
|
+
cursor
|
|
81
|
+
opencode
|
|
82
|
+
codex
|
|
83
|
+
kilo
|
|
84
|
+
kiro
|
|
85
|
+
gemini
|
|
86
|
+
antigravity
|
|
87
|
+
windsurf
|
|
88
|
+
qoder
|
|
89
|
+
codebuddy
|
|
90
|
+
copilot
|
|
91
|
+
droid
|
|
92
|
+
pi
|
|
93
|
+
```
|
|
75
94
|
|
|
76
|
-
|
|
95
|
+
### 指定开发者名称
|
|
77
96
|
|
|
78
97
|
```bash
|
|
79
|
-
smart-trellis init --tools codex,cursor
|
|
98
|
+
smart-trellis init --tools codex,cursor --user adong
|
|
80
99
|
```
|
|
81
100
|
|
|
82
|
-
|
|
101
|
+
如果不传 `--user`,会优先读取 `git config user.name`,再回退到系统用户名。
|
|
102
|
+
|
|
103
|
+
### 完全脚本化初始化
|
|
83
104
|
|
|
84
105
|
```bash
|
|
85
|
-
smart-trellis init
|
|
106
|
+
smart-trellis init \
|
|
107
|
+
--yes \
|
|
108
|
+
--user adong \
|
|
109
|
+
--trellis-activation explicit \
|
|
110
|
+
--gitignore-config
|
|
86
111
|
```
|
|
87
112
|
|
|
88
|
-
|
|
113
|
+
`smart-trellis init` 内部会把 Trellis 初始化切到非交互模式,相当于帮你执行一个带默认值的 `trellis init --yes ...`。
|
|
114
|
+
|
|
115
|
+
## Activation Mode
|
|
116
|
+
|
|
117
|
+
`0.5.20` 新增了 Trellis activation mode,用来控制“没有 active task 时,Trellis 是否主动接管”。
|
|
118
|
+
|
|
119
|
+
| 模式 | 行为 | 适合场景 |
|
|
120
|
+
| --- | --- | --- |
|
|
121
|
+
| `auto` | 默认行为。Trellis 会判断当前请求是否需要创建任务流程 | 希望 AI 自动进入 Trellis 工作流 |
|
|
122
|
+
| `explicit` | Trellis 保持空闲,除非用户明确说 `/trellis start`、`$trellis-start`、`走 Trellis` 等 | 希望普通问答和小改动不被流程接管 |
|
|
123
|
+
|
|
124
|
+
新项目直接指定:
|
|
89
125
|
|
|
90
126
|
```bash
|
|
91
127
|
smart-trellis init --tools codex,cursor --trellis-activation explicit
|
|
92
128
|
```
|
|
93
129
|
|
|
94
|
-
|
|
130
|
+
旧项目先更新模板:
|
|
95
131
|
|
|
96
132
|
```bash
|
|
97
|
-
trellis
|
|
133
|
+
trellis update
|
|
98
134
|
```
|
|
99
135
|
|
|
100
|
-
|
|
136
|
+
然后在 `.trellis/config.yaml` 中设置:
|
|
101
137
|
|
|
102
|
-
|
|
138
|
+
```yaml
|
|
139
|
+
trellis:
|
|
140
|
+
activation_mode: explicit
|
|
141
|
+
```
|
|
103
142
|
|
|
104
|
-
|
|
143
|
+
## `.gitignore` 生成目录选择
|
|
105
144
|
|
|
106
|
-
|
|
107
|
-
|
|
145
|
+
当前 `smart-trellis init` 会在选择工具之后,提示是否把生成目录加入 `.gitignore`。默认全选。
|
|
146
|
+
|
|
147
|
+
以 `codex,cursor` 为例,候选项通常是:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
.trellis/
|
|
151
|
+
.codex/
|
|
152
|
+
.agents/skills/
|
|
153
|
+
.cursor/
|
|
108
154
|
```
|
|
109
155
|
|
|
110
|
-
|
|
156
|
+
规则:
|
|
157
|
+
|
|
158
|
+
- 没有 `.gitignore` 时会创建。
|
|
159
|
+
- 已有 `.codex` 或 `.codex/` 时不会重复添加 `.codex/`。
|
|
160
|
+
- 已有 `.agents/` 时,不会再重复添加 `.agents/skills/`。
|
|
161
|
+
- 候选目录来自 Trellis 的 AI 工具注册表,不手写平台清单。
|
|
162
|
+
|
|
163
|
+
脚本模式下直接全选:
|
|
111
164
|
|
|
112
165
|
```bash
|
|
113
|
-
smart-trellis init --codex
|
|
166
|
+
smart-trellis init --tools codex,cursor --gitignore-config
|
|
114
167
|
```
|
|
115
168
|
|
|
116
|
-
|
|
169
|
+
完全不修改 `.gitignore`:
|
|
117
170
|
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
cursor
|
|
121
|
-
opencode
|
|
122
|
-
codex
|
|
123
|
-
kilo
|
|
124
|
-
kiro
|
|
125
|
-
gemini
|
|
126
|
-
antigravity
|
|
127
|
-
windsurf
|
|
128
|
-
qoder
|
|
129
|
-
codebuddy
|
|
130
|
-
copilot
|
|
131
|
-
droid
|
|
132
|
-
pi
|
|
171
|
+
```bash
|
|
172
|
+
smart-trellis init --tools codex,cursor --no-gitignore-config
|
|
133
173
|
```
|
|
134
174
|
|
|
135
|
-
|
|
175
|
+
注意:如果你把 `.trellis/` 加入 `.gitignore`,Trellis 的 spec、tasks、workspace 等状态默认不会被 Git 跟踪。适合把 Trellis 配置当本地工作区的团队;如果你的团队希望提交 `.trellis/spec/` 或任务记录,请在多选时取消 `.trellis/`。
|
|
136
176
|
|
|
137
|
-
|
|
177
|
+
## Registry 和模板
|
|
138
178
|
|
|
139
|
-
|
|
179
|
+
`smart-trellis init` 兼容原 `trellis init --registry` 能力,可以从自定义 GitHub、GitLab、Bitbucket 仓库拉取 spec。
|
|
140
180
|
|
|
141
|
-
|
|
181
|
+
直接下载 spec 目录:
|
|
142
182
|
|
|
143
183
|
```bash
|
|
144
|
-
smart-trellis init
|
|
184
|
+
smart-trellis init \
|
|
185
|
+
--tools codex,cursor \
|
|
186
|
+
--registry gh:myorg/myrepo/my-team-spec
|
|
145
187
|
```
|
|
146
188
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
如果 registry 目录里有 `index.json`,并且里面定义了多个模板,非交互模式下必须指定 `--template`:
|
|
189
|
+
Marketplace 模式指定模板:
|
|
150
190
|
|
|
151
191
|
```bash
|
|
152
192
|
smart-trellis init \
|
|
@@ -155,9 +195,7 @@ smart-trellis init \
|
|
|
155
195
|
--template my-template
|
|
156
196
|
```
|
|
157
197
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
### 指定分支
|
|
198
|
+
指定分支:
|
|
161
199
|
|
|
162
200
|
```bash
|
|
163
201
|
smart-trellis init \
|
|
@@ -165,153 +203,208 @@ smart-trellis init \
|
|
|
165
203
|
--registry gh:myorg/myrepo/specs#develop
|
|
166
204
|
```
|
|
167
205
|
|
|
168
|
-
|
|
206
|
+
GitLab 和 Bitbucket:
|
|
169
207
|
|
|
170
208
|
```bash
|
|
171
209
|
smart-trellis init --tools codex,cursor --registry gitlab:myorg/myrepo/specs
|
|
172
210
|
smart-trellis init --tools codex,cursor --registry bitbucket:myorg/myrepo/specs
|
|
173
211
|
```
|
|
174
212
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
`smart-trellis init` 默认会以安全方式写入文件。因为它内部会启用非交互模式,所以遇到已经存在的文件时默认跳过,避免覆盖已有配置。
|
|
178
|
-
|
|
179
|
-
如果你要强制覆盖已有文件:
|
|
213
|
+
远程模板写入策略:
|
|
180
214
|
|
|
181
215
|
```bash
|
|
182
|
-
smart-trellis init --tools codex,cursor --
|
|
216
|
+
smart-trellis init --tools codex,cursor --registry gh:myorg/myrepo/specs --overwrite
|
|
217
|
+
smart-trellis init --tools codex,cursor --registry gh:myorg/myrepo/specs --append
|
|
183
218
|
```
|
|
184
219
|
|
|
185
|
-
|
|
220
|
+
## 文件覆盖和 Monorepo
|
|
186
221
|
|
|
187
|
-
|
|
188
|
-
smart-trellis init --tools codex,cursor --skip-existing
|
|
189
|
-
```
|
|
222
|
+
默认写入策略偏安全:遇到已有文件会跳过,避免覆盖本地配置。
|
|
190
223
|
|
|
191
|
-
|
|
224
|
+
强制覆盖:
|
|
192
225
|
|
|
193
226
|
```bash
|
|
194
|
-
smart-trellis init --tools codex,cursor --
|
|
195
|
-
smart-trellis init --tools codex,cursor --registry gh:myorg/myrepo/specs --append
|
|
227
|
+
smart-trellis init --tools codex,cursor --force
|
|
196
228
|
```
|
|
197
229
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
默认情况下,`smart-trellis init` 会让 Trellis 自动检测当前项目是否为 monorepo。
|
|
201
|
-
|
|
202
|
-
强制启用 monorepo:
|
|
230
|
+
明确跳过已有文件:
|
|
203
231
|
|
|
204
232
|
```bash
|
|
205
|
-
smart-trellis init --tools codex,cursor --
|
|
233
|
+
smart-trellis init --tools codex,cursor --skip-existing
|
|
206
234
|
```
|
|
207
235
|
|
|
208
|
-
|
|
236
|
+
Monorepo 默认自动检测。也可以手动指定:
|
|
209
237
|
|
|
210
238
|
```bash
|
|
239
|
+
smart-trellis init --tools codex,cursor --monorepo
|
|
211
240
|
smart-trellis init --tools codex,cursor --no-monorepo
|
|
212
241
|
```
|
|
213
242
|
|
|
214
243
|
## 初始化后会生成什么
|
|
215
244
|
|
|
216
|
-
|
|
245
|
+
根据工具不同,生成内容会略有差异。常见输出包括:
|
|
217
246
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
247
|
+
| 路径 | 作用 |
|
|
248
|
+
| --- | --- |
|
|
249
|
+
| `.trellis/` | Trellis workflow、spec、tasks、workspace、脚本等核心目录 |
|
|
250
|
+
| `.agents/skills/` | 跨工具复用的 Trellis skills,Codex/Gemini/Copilot 等可读取 |
|
|
251
|
+
| `.codex/` | Codex 专用配置、agents、hooks、skills |
|
|
252
|
+
| `.cursor/` | Cursor 专用 commands、skills、agents、hooks |
|
|
253
|
+
| `.github/` | GitHub Copilot prompts、agents、hooks 等 |
|
|
254
|
+
| `AGENTS.md` | 项目级 AI 助手协作说明 |
|
|
223
255
|
|
|
224
|
-
|
|
256
|
+
`smart-trellis init` 的目标不是生成一个轻量配置,而是用更少确认步骤生成完整 Trellis 项目结构。
|
|
225
257
|
|
|
226
|
-
## Apifox
|
|
258
|
+
## Apifox 前后端联调
|
|
227
259
|
|
|
228
|
-
|
|
260
|
+
`0.5.21` 新增了 `trellis-joint-debugger`,`0.5.22` 将它扩展为 Apifox Web API 驱动的联调流程。
|
|
229
261
|
|
|
230
|
-
|
|
262
|
+
### 什么时候用
|
|
231
263
|
|
|
232
|
-
|
|
233
|
-
- Codex / `.agents/skills`:`$trellis-joint-debugger`
|
|
264
|
+
当用户提供 Apifox 接口链接,并提到“联调”“接口”“参数”“详情”“完成它”等开发意图时使用。
|
|
234
265
|
|
|
235
|
-
|
|
266
|
+
支持的 Apifox 链接:
|
|
236
267
|
|
|
237
268
|
```text
|
|
238
269
|
app.apifox.com/link/project/{projectId}/apis/api-{apiId}
|
|
239
270
|
app.apifox.com/project/{projectId}/apis/api-{apiId}
|
|
240
271
|
```
|
|
241
272
|
|
|
242
|
-
|
|
273
|
+
### 怎么触发
|
|
274
|
+
|
|
275
|
+
Cursor:
|
|
276
|
+
|
|
277
|
+
```text
|
|
278
|
+
/trellis-joint-debugger
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Codex / `.agents/skills`:
|
|
282
|
+
|
|
283
|
+
```text
|
|
284
|
+
$trellis-joint-debugger
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
如果你是旧项目,先运行:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
trellis update
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 第一次配置 Apifox Token
|
|
294
|
+
|
|
295
|
+
检查是否已配置:
|
|
243
296
|
|
|
244
297
|
```bash
|
|
245
298
|
python3 ./.trellis/scripts/apifox_token.py check
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
保存 token:
|
|
302
|
+
|
|
303
|
+
```bash
|
|
246
304
|
python3 ./.trellis/scripts/apifox_token.py save
|
|
247
305
|
```
|
|
248
306
|
|
|
249
|
-
`save`
|
|
307
|
+
`save` 使用隐藏输入,并保存到用户级配置:
|
|
250
308
|
|
|
251
309
|
```text
|
|
252
310
|
~/.trellis/apifox.env
|
|
253
311
|
```
|
|
254
312
|
|
|
255
|
-
|
|
313
|
+
读取优先级:
|
|
256
314
|
|
|
257
315
|
1. `APIFOX_ACCESS_TOKEN` 环境变量
|
|
258
316
|
2. `~/.trellis/apifox.env`
|
|
259
|
-
3. 旧项目内 `.trellis/.runtime/apifox.env
|
|
317
|
+
3. 旧项目内 `.trellis/.runtime/apifox.env`
|
|
260
318
|
|
|
261
|
-
token 只用于请求 header
|
|
319
|
+
token 只用于请求 header,不会被命令打印。
|
|
262
320
|
|
|
263
|
-
|
|
264
|
-
GET https://api.apifox.com/api/v1/projects/{projectId}/http-apis/{apiId}
|
|
265
|
-
```
|
|
321
|
+
### 联调流程会做什么
|
|
266
322
|
|
|
267
|
-
|
|
323
|
+
1. 从 Apifox 链接解析 `projectId` 和 `apiId`。
|
|
324
|
+
2. 请求 Apifox Web API:
|
|
268
325
|
|
|
269
|
-
|
|
326
|
+
```text
|
|
327
|
+
GET https://api.apifox.com/api/v1/projects/{projectId}/http-apis/{apiId}
|
|
328
|
+
```
|
|
270
329
|
|
|
271
|
-
|
|
330
|
+
3. 提取 method、path、query/path/header/body、responses。
|
|
331
|
+
4. 如果请求体或响应体里有 `$ref: #/definitions/{schemaId}`,继续请求 data-schemas 并展开字段。
|
|
332
|
+
5. 在当前项目里搜索已有 API 封装、请求客户端、代理配置和环境配置。
|
|
333
|
+
6. 对比 Apifox 的 method/path/字段与本地 API wrapper。
|
|
334
|
+
7. 如果要真实请求业务后端,根据项目代理和环境配置发请求;如果返回 `401` 或缺少登录态,明确报告未登录,不猜测数据。
|
|
272
335
|
|
|
273
|
-
|
|
274
|
-
pnpm --filter @ibotor/smart-trellis build
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
然后直接用本地 bin 测试:
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
node packages/cli/bin/smart-trellis.js init --tools codex,cursor --user adong
|
|
281
|
-
```
|
|
336
|
+
## 推荐团队用法
|
|
282
337
|
|
|
283
|
-
|
|
338
|
+
新项目默认推荐:
|
|
284
339
|
|
|
285
340
|
```bash
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
341
|
+
smart-trellis init \
|
|
342
|
+
--tools codex,cursor \
|
|
343
|
+
--user <developer-name> \
|
|
344
|
+
--gitignore-config
|
|
290
345
|
```
|
|
291
346
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
团队成员在新项目里只需要执行:
|
|
347
|
+
如果团队希望 Trellis 只在明确调用时启动:
|
|
295
348
|
|
|
296
349
|
```bash
|
|
297
|
-
smart-trellis init
|
|
350
|
+
smart-trellis init \
|
|
351
|
+
--tools codex,cursor \
|
|
352
|
+
--user <developer-name> \
|
|
353
|
+
--trellis-activation explicit \
|
|
354
|
+
--gitignore-config
|
|
298
355
|
```
|
|
299
356
|
|
|
300
|
-
|
|
357
|
+
如果团队维护了统一 spec registry:
|
|
301
358
|
|
|
302
359
|
```bash
|
|
303
360
|
smart-trellis init \
|
|
304
361
|
--tools codex,cursor \
|
|
305
362
|
--user <developer-name> \
|
|
306
|
-
--registry gh:<org>/<repo>/<spec-path>
|
|
363
|
+
--registry gh:<org>/<repo>/<spec-path> \
|
|
364
|
+
--trellis-activation explicit \
|
|
365
|
+
--gitignore-config
|
|
307
366
|
```
|
|
308
367
|
|
|
309
|
-
|
|
368
|
+
Marketplace registry:
|
|
310
369
|
|
|
311
370
|
```bash
|
|
312
371
|
smart-trellis init \
|
|
313
372
|
--tools codex,cursor \
|
|
314
373
|
--user <developer-name> \
|
|
315
374
|
--registry gh:<org>/<repo>/<marketplace-path> \
|
|
316
|
-
--template <template-id>
|
|
375
|
+
--template <template-id> \
|
|
376
|
+
--trellis-activation explicit \
|
|
377
|
+
--gitignore-config
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
## 本地开发验证
|
|
381
|
+
|
|
382
|
+
在本仓库开发时,先构建 CLI:
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
pnpm --filter @ibotor/smart-trellis build
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
直接用本地 bin 测试:
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
node packages/cli/bin/smart-trellis.js init --tools codex,cursor --user adong
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
也可以在临时项目里验证:
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
mkdir /tmp/smart-trellis-demo
|
|
398
|
+
cd /tmp/smart-trellis-demo
|
|
399
|
+
echo '{"name":"smart-trellis-demo"}' > package.json
|
|
400
|
+
node /path/to/smart-trellis/packages/cli/bin/smart-trellis.js init --tools codex,cursor --user adong
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
发布前建议至少运行:
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
pnpm --filter @ibotor/smart-trellis test
|
|
407
|
+
pnpm --filter @ibotor/smart-trellis build
|
|
408
|
+
pnpm --filter @ibotor/smart-trellis lint
|
|
409
|
+
pnpm --filter @ibotor/smart-trellis typecheck
|
|
317
410
|
```
|
package/dist/cli/smart.js
CHANGED
|
@@ -22,7 +22,9 @@ const initCommand = program
|
|
|
22
22
|
.option("--overwrite", "Overwrite existing spec directory when using template")
|
|
23
23
|
.option("--append", "Only add missing files when using template")
|
|
24
24
|
.option("-r, --registry <source>", "Use a custom template registry (e.g., gh:myorg/myrepo/specs)")
|
|
25
|
-
.option("--trellis-activation <mode>", "Set no-task Trellis activation mode: auto or explicit")
|
|
25
|
+
.option("--trellis-activation <mode>", "Set no-task Trellis activation mode: auto or explicit")
|
|
26
|
+
.option("--gitignore-config", "Add generated config directories to .gitignore without prompting")
|
|
27
|
+
.option("--no-gitignore-config", "Do not add generated config directories to .gitignore");
|
|
26
28
|
for (const tool of getInitToolChoices()) {
|
|
27
29
|
initCommand.option(`--${tool.key}`, `Include ${tool.name}`);
|
|
28
30
|
}
|
package/dist/cli/smart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/cli/smart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAyB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,2BAA2B,CAAC,CAAC;AAElE,MAAM,WAAW,GAAG,OAAO;KACxB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KACxE,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;KAClE,MAAM,CACL,mBAAmB,EACnB,mDAAmD,CACpD;KACA,MAAM,CAAC,aAAa,EAAE,yCAAyC,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;KACnE,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;KAClD,MAAM,CACL,uBAAuB,EACvB,uDAAuD,CACxD;KACA,MAAM,CACL,aAAa,EACb,uDAAuD,CACxD;KACA,MAAM,CAAC,UAAU,EAAE,4CAA4C,CAAC;KAChE,MAAM,CACL,yBAAyB,EACzB,8DAA8D,CAC/D;KACA,MAAM,CACL,6BAA6B,EAC7B,uDAAuD,CACxD,CAAC;AAEJ,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACxC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;QACF,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/cli/smart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAyB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,2BAA2B,CAAC,CAAC;AAElE,MAAM,WAAW,GAAG,OAAO;KACxB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KACxE,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;KAClE,MAAM,CACL,mBAAmB,EACnB,mDAAmD,CACpD;KACA,MAAM,CAAC,aAAa,EAAE,yCAAyC,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;KACnE,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;KAClD,MAAM,CACL,uBAAuB,EACvB,uDAAuD,CACxD;KACA,MAAM,CACL,aAAa,EACb,uDAAuD,CACxD;KACA,MAAM,CAAC,UAAU,EAAE,4CAA4C,CAAC;KAChE,MAAM,CACL,yBAAyB,EACzB,8DAA8D,CAC/D;KACA,MAAM,CACL,6BAA6B,EAC7B,uDAAuD,CACxD;KACA,MAAM,CACL,oBAAoB,EACpB,kEAAkE,CACnE;KACA,MAAM,CACL,uBAAuB,EACvB,uDAAuD,CACxD,CAAC;AAEJ,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACxC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;QACF,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type InitOptions } from "./init.js";
|
|
2
|
-
import type
|
|
2
|
+
import { type CliFlag } from "../types/ai-tools.js";
|
|
3
3
|
type SmartToolFlagOptions = Partial<Record<CliFlag, boolean>>;
|
|
4
4
|
export type TrellisActivationMode = "auto" | "explicit";
|
|
5
5
|
export type SmartInitOptions = SmartToolFlagOptions & {
|
|
6
6
|
append?: boolean;
|
|
7
7
|
force?: boolean;
|
|
8
|
+
gitignoreConfig?: boolean;
|
|
8
9
|
monorepo?: boolean;
|
|
9
10
|
overwrite?: boolean;
|
|
10
11
|
registry?: string;
|
|
@@ -19,6 +20,8 @@ export declare const SMART_DEFAULT_TOOLS: CliFlag[];
|
|
|
19
20
|
export declare function parseSmartToolsOption(value: string): CliFlag[];
|
|
20
21
|
export declare function parseSmartTrellisActivationMode(value: string | undefined): TrellisActivationMode | undefined;
|
|
21
22
|
export declare function patchTrellisActivationConfig(content: string, mode: TrellisActivationMode): string;
|
|
23
|
+
export declare function getSmartGitignoreCandidates(tools: CliFlag[]): string[];
|
|
24
|
+
export declare function patchGitignoreConfigDirs(content: string, entries: string[]): string;
|
|
22
25
|
export declare function createSmartInitOptions(options: SmartInitOptions, tools: CliFlag[], detectedUser?: string): InitOptions;
|
|
23
26
|
export declare function detectDeveloperName(cwd?: string): string | undefined;
|
|
24
27
|
export declare function smartInit(options: SmartInitOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-init.d.ts","sourceRoot":"","sources":["../../src/commands/smart-init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smart-init.d.ts","sourceRoot":"","sources":["../../src/commands/smart-init.ts"],"names":[],"mappings":"AASA,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAErE,KAAK,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,UAAU,CAAC;AAExD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,OAAO,EAAwB,CAAC;AAiBlE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAkB9D;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,qBAAqB,GAAG,SAAS,CAWnC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,qBAAqB,GAC1B,MAAM,CAwCR;AA2CD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAUtE;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAAE,GAChB,MAAM,CAmBR;AAiED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,OAAO,EAAE,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,WAAW,CA6Bb;AAED,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAsB,GAC1B,MAAM,GAAG,SAAS,CAoBpB;AAmGD,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxE"}
|
|
@@ -3,9 +3,11 @@ import fs from "node:fs";
|
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import inquirer from "inquirer";
|
|
6
|
-
import { getInitToolChoices } from "../configurators/index.js";
|
|
6
|
+
import { getInitToolChoices, resolveCliFlag, } from "../configurators/index.js";
|
|
7
7
|
import { init } from "./init.js";
|
|
8
|
+
import { getManagedPaths } from "../types/ai-tools.js";
|
|
8
9
|
export const SMART_DEFAULT_TOOLS = ["codex", "cursor"];
|
|
10
|
+
const TRELLIS_GITIGNORE_ENTRY = ".trellis/";
|
|
9
11
|
function supportedToolFlags() {
|
|
10
12
|
return getInitToolChoices().map((tool) => tool.key);
|
|
11
13
|
}
|
|
@@ -71,6 +73,75 @@ export function patchTrellisActivationConfig(content, mode) {
|
|
|
71
73
|
const separator = content.endsWith("\n") ? "\n" : "\n\n";
|
|
72
74
|
return `${content}${separator}trellis:\n activation_mode: ${mode}\n`;
|
|
73
75
|
}
|
|
76
|
+
function normalizeGitignoreDirEntry(value) {
|
|
77
|
+
const trimmed = value.trim();
|
|
78
|
+
if (!trimmed || trimmed.startsWith("#") || trimmed.startsWith("!")) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const normalized = trimmed
|
|
82
|
+
.replace(/\\/g, "/")
|
|
83
|
+
.replace(/^\/+/, "")
|
|
84
|
+
.replace(/\/+$/g, "");
|
|
85
|
+
if (!normalized) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
return `${normalized}/`;
|
|
89
|
+
}
|
|
90
|
+
function uniqueDirEntries(entries) {
|
|
91
|
+
const seen = new Set();
|
|
92
|
+
const unique = [];
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
const normalized = normalizeGitignoreDirEntry(entry);
|
|
95
|
+
if (!normalized || seen.has(normalized)) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
seen.add(normalized);
|
|
99
|
+
unique.push(normalized);
|
|
100
|
+
}
|
|
101
|
+
return unique;
|
|
102
|
+
}
|
|
103
|
+
function gitignoreEntryCoversCandidate(gitignoreEntry, candidate) {
|
|
104
|
+
const normalized = normalizeGitignoreDirEntry(gitignoreEntry);
|
|
105
|
+
return (normalized === candidate ||
|
|
106
|
+
Boolean(normalized && candidate.startsWith(normalized)));
|
|
107
|
+
}
|
|
108
|
+
export function getSmartGitignoreCandidates(tools) {
|
|
109
|
+
const entries = [TRELLIS_GITIGNORE_ENTRY];
|
|
110
|
+
for (const tool of tools) {
|
|
111
|
+
const platformId = resolveCliFlag(tool);
|
|
112
|
+
if (!platformId) {
|
|
113
|
+
throw new Error(`Unknown tool "${tool}".`);
|
|
114
|
+
}
|
|
115
|
+
entries.push(...getManagedPaths(platformId));
|
|
116
|
+
}
|
|
117
|
+
return uniqueDirEntries(entries);
|
|
118
|
+
}
|
|
119
|
+
export function patchGitignoreConfigDirs(content, entries) {
|
|
120
|
+
const candidates = uniqueDirEntries(entries);
|
|
121
|
+
if (candidates.length === 0) {
|
|
122
|
+
return content;
|
|
123
|
+
}
|
|
124
|
+
const existingLines = content.split(/\r?\n/);
|
|
125
|
+
const missing = candidates.filter((candidate) => !existingLines.some((line) => gitignoreEntryCoversCandidate(line, candidate)));
|
|
126
|
+
if (missing.length === 0) {
|
|
127
|
+
return content;
|
|
128
|
+
}
|
|
129
|
+
const prefix = content && !content.endsWith("\n") ? `${content}\n` : content;
|
|
130
|
+
return `${prefix}${missing.join("\n")}\n`;
|
|
131
|
+
}
|
|
132
|
+
function applyGitignoreConfigDirs(cwd, entries) {
|
|
133
|
+
if (entries.length === 0) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const gitignorePath = path.join(cwd, ".gitignore");
|
|
137
|
+
const content = fs.existsSync(gitignorePath)
|
|
138
|
+
? fs.readFileSync(gitignorePath, "utf-8")
|
|
139
|
+
: "";
|
|
140
|
+
const patched = patchGitignoreConfigDirs(content, entries);
|
|
141
|
+
if (patched !== content) {
|
|
142
|
+
fs.writeFileSync(gitignorePath, patched, "utf-8");
|
|
143
|
+
}
|
|
144
|
+
}
|
|
74
145
|
function applyTrellisActivationConfig(cwd, mode) {
|
|
75
146
|
if (!mode) {
|
|
76
147
|
return;
|
|
@@ -169,6 +240,28 @@ async function resolveSmartTools(options) {
|
|
|
169
240
|
]);
|
|
170
241
|
return answers.tools;
|
|
171
242
|
}
|
|
243
|
+
async function resolveSmartGitignoreConfigDirs(options, tools) {
|
|
244
|
+
const candidates = getSmartGitignoreCandidates(tools);
|
|
245
|
+
if (options.gitignoreConfig === false || candidates.length === 0) {
|
|
246
|
+
return [];
|
|
247
|
+
}
|
|
248
|
+
if (options.gitignoreConfig === true || options.yes) {
|
|
249
|
+
return candidates;
|
|
250
|
+
}
|
|
251
|
+
const answers = await inquirer.prompt([
|
|
252
|
+
{
|
|
253
|
+
type: "checkbox",
|
|
254
|
+
name: "gitignoreConfigDirs",
|
|
255
|
+
message: "Select generated config directories to add to .gitignore:",
|
|
256
|
+
choices: candidates.map((entry) => ({
|
|
257
|
+
checked: true,
|
|
258
|
+
name: entry,
|
|
259
|
+
value: entry,
|
|
260
|
+
})),
|
|
261
|
+
},
|
|
262
|
+
]);
|
|
263
|
+
return answers.gitignoreConfigDirs ?? [];
|
|
264
|
+
}
|
|
172
265
|
async function resolveSmartTrellisActivation(options) {
|
|
173
266
|
const parsed = parseSmartTrellisActivationMode(options.trellisActivation);
|
|
174
267
|
const hasExplicitTools = !!options.tools ||
|
|
@@ -198,9 +291,11 @@ async function resolveSmartTrellisActivation(options) {
|
|
|
198
291
|
}
|
|
199
292
|
export async function smartInit(options) {
|
|
200
293
|
const tools = await resolveSmartTools(options);
|
|
294
|
+
const gitignoreConfigDirs = await resolveSmartGitignoreConfigDirs(options, tools);
|
|
201
295
|
const activationMode = await resolveSmartTrellisActivation(options);
|
|
202
296
|
const initOptions = createSmartInitOptions(options, tools, detectDeveloperName());
|
|
203
297
|
await init(initOptions);
|
|
204
298
|
applyTrellisActivationConfig(process.cwd(), activationMode);
|
|
299
|
+
applyGitignoreConfigDirs(process.cwd(), gitignoreConfigDirs);
|
|
205
300
|
}
|
|
206
301
|
//# sourceMappingURL=smart-init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-init.js","sourceRoot":"","sources":["../../src/commands/smart-init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"smart-init.js","sourceRoot":"","sources":["../../src/commands/smart-init.ts"],"names":[],"mappings":"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"}
|