@agile-team/robot-cli 1.1.5 → 1.1.7

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/lib/create.js +40 -44
  2. package/package.json +1 -1
package/lib/create.js CHANGED
@@ -144,34 +144,34 @@ async function selectTemplateMethod() {
144
144
  message: "模板选择方式:",
145
145
  choices: [
146
146
  {
147
- name: `${chalk.cyan('●')} ${chalk.bold('推荐模板')} ${chalk.dim('(常用模板快速选择) - 基于团队使用频率推荐的热门模板')}`,
147
+ name: `${chalk.white('●')} ${chalk.bold('推荐模板')} ${chalk.dim('(常用模板快速选择) - 基于团队使用频率推荐的热门模板')}`,
148
148
  value: "recommended"
149
149
  },
150
150
  {
151
151
  name: chalk.dim("─".repeat(70)),
152
152
  value: "sep1",
153
- disabled: true
153
+ disabled: "─"
154
154
  },
155
155
  {
156
- name: `${chalk.cyan('●')} ${chalk.bold('分类模板')} ${chalk.dim('(按项目类型分类选择) - 前端、后端、移动端、桌面端分类浏览')}`,
156
+ name: `${chalk.white('●')} ${chalk.bold('分类模板')} ${chalk.dim('(按项目类型分类选择) - 前端、后端、移动端、桌面端分类浏览')}`,
157
157
  value: "category"
158
158
  },
159
159
  {
160
160
  name: chalk.dim("─".repeat(70)),
161
161
  value: "sep2",
162
- disabled: true
162
+ disabled: "─"
163
163
  },
164
164
  {
165
- name: `${chalk.cyan('●')} ${chalk.bold('搜索模板')} ${chalk.dim('(关键词搜索) - 通过技术栈、功能特性等关键词快速查找')}`,
165
+ name: `${chalk.white('●')} ${chalk.bold('搜索模板')} ${chalk.dim('(关键词搜索) - 通过技术栈、功能特性等关键词快速查找')}`,
166
166
  value: "search"
167
167
  },
168
168
  {
169
169
  name: chalk.dim("─".repeat(70)),
170
170
  value: "sep3",
171
- disabled: true
171
+ disabled: "─"
172
172
  },
173
173
  {
174
- name: `${chalk.cyan('●')} ${chalk.bold('全部模板')} ${chalk.dim('(查看所有可用模板) - 按分类展示所有可用的项目模板')}`,
174
+ name: `${chalk.white('●')} ${chalk.bold('全部模板')} ${chalk.dim('(查看所有可用模板) - 按分类展示所有可用的项目模板')}`,
175
175
  value: "all"
176
176
  },
177
177
  ],
@@ -213,7 +213,7 @@ async function selectFromRecommended() {
213
213
  const choices = Object.entries(recommended).map(([key, template]) => {
214
214
  // 构建特性标签
215
215
  const featureTags = template.features.slice(0, 3).map(f =>
216
- chalk.cyan(`[${f}]`)
216
+ chalk.dim(`[${f}]`)
217
217
  ).join(' ');
218
218
 
219
219
  // 版本标签 - 只保留方括号内的版本
@@ -222,16 +222,27 @@ async function selectFromRecommended() {
222
222
  chalk.yellow('[精简版]');
223
223
 
224
224
  return {
225
- name: `${chalk.bold.white(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag}
226
- ${chalk.dim(template.description)}
227
- ${featureTags}${template.features.length > 3 ? chalk.dim(` +${template.features.length - 3}more`) : ''}
228
- ${chalk.dim('━'.repeat(60))}`,
225
+ name: `${chalk.bold.white(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
226
+ ${chalk.dim(featureTags)}${template.features.length > 3 ? chalk.dim(` +${template.features.length - 3}more`) : ''}`,
229
227
  value: { key, ...template },
230
228
  short: template.name,
231
229
  };
232
230
  });
233
231
 
234
- choices.push({
232
+ // 为每个推荐模板添加分隔符
233
+ const choicesWithSeparators = [];
234
+ choices.forEach((choice, index) => {
235
+ choicesWithSeparators.push(choice);
236
+ if (index < choices.length - 1) {
237
+ choicesWithSeparators.push({
238
+ name: chalk.dim("─".repeat(70)),
239
+ value: `sep_${index}`,
240
+ disabled: "─"
241
+ });
242
+ }
243
+ });
244
+
245
+ choicesWithSeparators.push({
235
246
  name: chalk.dim("⬅️ 返回选择其他方式"),
236
247
  value: "back",
237
248
  });
@@ -241,8 +252,8 @@ async function selectFromRecommended() {
241
252
  type: "list",
242
253
  name: "selectedTemplate",
243
254
  message: "选择推荐模板:",
244
- choices,
245
- pageSize: 8,
255
+ choices: choicesWithSeparators,
256
+ pageSize: 15,
246
257
  loop: false
247
258
  },
248
259
  ]);
@@ -533,7 +544,7 @@ async function selectBySearch() {
533
544
  {
534
545
  name: chalk.dim("━".repeat(70)),
535
546
  value: "separator",
536
- disabled: true,
547
+ disabled: "━",
537
548
  },
538
549
  { name: "🔍 重新搜索", value: "search_again" },
539
550
  { name: "⬅️ 返回模板选择方式", value: "back_to_mode" }
@@ -578,7 +589,7 @@ async function selectFromAll() {
578
589
  categorizedChoices.push({
579
590
  name: chalk.yellow.bold("🎨 前端项目"),
580
591
  value: "frontend_header",
581
- disabled: true
592
+ disabled: "🎨"
582
593
  });
583
594
 
584
595
  Object.entries(allTemplates)
@@ -590,7 +601,7 @@ async function selectFromAll() {
590
601
  chalk.green('[完整版]') : chalk.yellow('[精简版]');
591
602
 
592
603
  categorizedChoices.push({
593
- name: ` ● ${chalk.bold(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
604
+ name: ` ${chalk.white('')} ${chalk.bold(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
594
605
  ${chalk.dim(`技术栈: ${techStack} • 命令: robot create my-app -t ${key}`)}`,
595
606
  value: { key, ...template },
596
607
  short: template.name
@@ -600,20 +611,15 @@ async function selectFromAll() {
600
611
  categorizedChoices.push({
601
612
  name: chalk.dim(" " + "─".repeat(66)),
602
613
  value: `sep_${key}`,
603
- disabled: true
614
+ disabled: "─"
604
615
  });
605
616
  });
606
617
 
607
618
  // 移动端模板
608
- categorizedChoices.push({
609
- name: "",
610
- value: "spacer1",
611
- disabled: true
612
- });
613
619
  categorizedChoices.push({
614
620
  name: chalk.yellow.bold("📱 移动端项目"),
615
621
  value: "mobile_header",
616
- disabled: true
622
+ disabled: "📱"
617
623
  });
618
624
 
619
625
  Object.entries(allTemplates)
@@ -623,7 +629,7 @@ async function selectFromAll() {
623
629
  chalk.green('[完整版]') : chalk.yellow('[精简版]');
624
630
 
625
631
  categorizedChoices.push({
626
- name: ` ● ${chalk.bold(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
632
+ name: ` ${chalk.white('')} ${chalk.bold(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
627
633
  ${chalk.dim(`跨平台: 小程序/H5/App • 命令: robot create my-app -t ${key}`)}`,
628
634
  value: { key, ...template },
629
635
  short: template.name
@@ -633,20 +639,15 @@ async function selectFromAll() {
633
639
  categorizedChoices.push({
634
640
  name: chalk.dim(" " + "─".repeat(66)),
635
641
  value: `sep_${key}`,
636
- disabled: true
642
+ disabled: "─"
637
643
  });
638
644
  });
639
645
 
640
646
  // 后端模板
641
- categorizedChoices.push({
642
- name: "",
643
- value: "spacer2",
644
- disabled: true
645
- });
646
647
  categorizedChoices.push({
647
648
  name: chalk.yellow.bold("🚀 后端项目"),
648
649
  value: "backend_header",
649
- disabled: true
650
+ disabled: "🚀"
650
651
  });
651
652
 
652
653
  Object.entries(allTemplates)
@@ -657,7 +658,7 @@ async function selectFromAll() {
657
658
  chalk.green('[完整版]') : chalk.yellow('[精简版]');
658
659
 
659
660
  categorizedChoices.push({
660
- name: ` ● ${chalk.bold(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
661
+ name: ` ${chalk.white('')} ${chalk.bold(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
661
662
  ${chalk.dim(`框架: ${framework} • 命令: robot create my-app -t ${key}`)}`,
662
663
  value: { key, ...template },
663
664
  short: template.name
@@ -667,20 +668,15 @@ async function selectFromAll() {
667
668
  categorizedChoices.push({
668
669
  name: chalk.dim(" " + "─".repeat(66)),
669
670
  value: `sep_${key}`,
670
- disabled: true
671
+ disabled: "─"
671
672
  });
672
673
  });
673
674
 
674
675
  // 桌面端模板
675
- categorizedChoices.push({
676
- name: "",
677
- value: "spacer3",
678
- disabled: true
679
- });
680
676
  categorizedChoices.push({
681
677
  name: chalk.yellow.bold("💻 桌面端项目"),
682
678
  value: "desktop_header",
683
- disabled: true
679
+ disabled: "💻"
684
680
  });
685
681
 
686
682
  Object.entries(allTemplates)
@@ -691,7 +687,7 @@ async function selectFromAll() {
691
687
  chalk.green('[完整版]') : chalk.yellow('[精简版]');
692
688
 
693
689
  categorizedChoices.push({
694
- name: ` ● ${chalk.bold(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
690
+ name: ` ${chalk.white('')} ${chalk.bold(template.name.replace(/\s*(完整版|精简版)\s*$/, ''))} ${versionTag} - ${chalk.dim(template.description)}
695
691
  ${chalk.dim(`框架: ${framework} • 命令: robot create my-app -t ${key}`)}`,
696
692
  value: { key, ...template },
697
693
  short: template.name
@@ -701,7 +697,7 @@ async function selectFromAll() {
701
697
  categorizedChoices.push({
702
698
  name: chalk.dim(" " + "─".repeat(66)),
703
699
  value: `sep_${key}`,
704
- disabled: true
700
+ disabled: "─"
705
701
  });
706
702
  });
707
703
 
@@ -710,7 +706,7 @@ async function selectFromAll() {
710
706
  {
711
707
  name: chalk.dim("━".repeat(70)),
712
708
  value: "separator",
713
- disabled: true,
709
+ disabled: "━",
714
710
  },
715
711
  {
716
712
  name: chalk.dim("⬅️ 返回模板选择方式"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/robot-cli",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "🤖 现代化项目脚手架工具,支持多技术栈快速创建项目 - 总是下载最新版本",
5
5
  "type": "module",
6
6
  "bin": {