@icebreakers/monorepo-templates 2.0.0 → 2.0.1

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.
@@ -79,6 +79,6 @@ jobs:
79
79
  run: pnpm test
80
80
 
81
81
  - name: Upload coverage reports to Codecov
82
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
82
+ uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
83
83
  env:
84
84
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
@@ -21,6 +21,7 @@ on:
21
21
  - prepare
22
22
  - publish
23
23
  - publish-unpublished
24
+ - reconcile
24
25
  package:
25
26
  description: Package used for unpublished-version recovery
26
27
  required: false
@@ -29,6 +30,11 @@ on:
29
30
  description: Version used for unpublished-version recovery
30
31
  required: false
31
32
  type: string
33
+ dry-run:
34
+ description: Preview release reconciliation without changes
35
+ required: false
36
+ default: false
37
+ type: boolean
32
38
 
33
39
  env:
34
40
  HUSKY: 0
@@ -72,4 +78,5 @@ jobs:
72
78
  REPO_RELEASE_MODE: ${{ inputs.mode || 'auto' }}
73
79
  REPO_RELEASE_PACKAGE: ${{ inputs.package }}
74
80
  REPO_RELEASE_VERSION: ${{ inputs.version }}
81
+ REPO_RELEASE_DRY_RUN: ${{ inputs.dry-run }}
75
82
  run: pnpm exec repo release ci
@@ -3,7 +3,7 @@
3
3
  "type": "module",
4
4
  "version": "0.0.0",
5
5
  "private": true,
6
- "packageManager": "pnpm@12.3.4",
6
+ "packageManager": "pnpm@12.4.2",
7
7
  "description": "Source workspace for repoctl and Icebreaker's shared development packages",
8
8
  "author": "ice breaker <hi@sonofmagic.top>",
9
9
  "license": "MIT",
@@ -72,13 +72,13 @@
72
72
  },
73
73
  "devDependencies": {
74
74
  "@commitlint/cli": "^21.2.2",
75
- "@eslint/config-inspector": "^3.4.1",
75
+ "@eslint/config-inspector": "^3.5.0",
76
76
  "@icebreakers/commitlint-config": "workspace:*",
77
77
  "@icebreakers/eslint-config": "workspace:*",
78
78
  "@icebreakers/monorepo": "workspace:*",
79
79
  "@icebreakers/stylelint-config": "workspace:*",
80
- "@types/node": "^26.5.1",
81
- "@vitest/coverage-v8": "~5.0.0",
80
+ "@types/node": "^26.6.1",
81
+ "@vitest/coverage-v8": "~5.0.1",
82
82
  "eslint": "^10.10.0",
83
83
  "execa": "^10.0.1",
84
84
  "husky": "^9.1.7",
@@ -89,10 +89,10 @@
89
89
  "tailwindcss": "^4.3.3",
90
90
  "tsd": "^0.33.0",
91
91
  "tsdown": "0.23.0",
92
- "turbo": "^2.10.12",
92
+ "turbo": "^2.10.13",
93
93
  "typescript": "^6.0.3",
94
- "vitest": "~5.0.0",
95
- "yaml": "^2.9.0"
94
+ "vitest": "~5.0.1",
95
+ "yaml": "^2.9.1"
96
96
  },
97
97
  "publishConfig": {
98
98
  "access": "public",
@@ -15,15 +15,15 @@ allowBuilds:
15
15
  vue-demi: true
16
16
  workerd: true
17
17
  overrides:
18
- prettier: 3.9.6
18
+ prettier: 3.9.7
19
19
  typescript: 6.0.3
20
20
  vite: 8.3.0
21
21
  postcss: 8.5.28
22
22
  postcss-selector-parser: 7.1.6
23
- js-yaml: 5.4.1
23
+ js-yaml: 5.4.2
24
24
  nanoid: 6.0.1
25
- brace-expansion: 5.0.9
25
+ brace-expansion: 5.0.12
26
26
  cross-spawn: 7.0.6
27
- adm-zip: 0.6.0
27
+ adm-zip: 0.6.1
28
28
  uuid: 14.0.2
29
29
  esbuild: 0.28.2
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@icebreakers/monorepo-templates",
3
3
  "type": "module",
4
- "version": "2.0.0",
4
+ "version": "2.0.1",
5
5
  "description": "Built-in project templates and managed workspace assets for repoctl",
6
6
  "author": "ice breaker <hi@sonofmagic.top>",
7
7
  "license": "MIT",
@@ -51,7 +51,7 @@
51
51
  "@inquirer/select": "^5.2.5",
52
52
  "commander": "^15.0.0",
53
53
  "nanoexec": "^1.1.0",
54
- "yaml": "^2.9.0"
54
+ "yaml": "^2.9.1"
55
55
  },
56
56
  "publishConfig": {
57
57
  "access": "public",
@@ -37,37 +37,37 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@faker-js/faker": "^10.6.0",
40
- "@tanstack/vue-query": "^5.102.8",
41
- "@tanstack/vue-query-devtools": "^6.1.48",
40
+ "@tanstack/vue-query": "^5.103.1",
41
+ "@tanstack/vue-query-devtools": "^6.2.1",
42
42
  "@tanstack/vue-table": "^9.2.4",
43
- "@tanstack/vue-virtual": "^3.13.38",
44
- "@trpc/client": "^11.18.0",
43
+ "@tanstack/vue-virtual": "^3.13.39",
44
+ "@trpc/client": "^11.19.0",
45
45
  "clsx": "^2.1.1",
46
46
  "pinia": "^4.0.3",
47
- "tailwind-merge": "^3.6.0",
47
+ "tailwind-merge": "^3.7.0",
48
48
  "tailwind-variants": "^3.3.1",
49
- "vue": "^3.5.42",
50
- "vue-i18n": "^11.4.10",
49
+ "vue": "^3.5.43",
50
+ "vue-i18n": "^11.4.12",
51
51
  "vue-router": "^5.3.1"
52
52
  },
53
53
  "devDependencies": {
54
- "@cloudflare/vite-plugin": "^1.54.8",
54
+ "@cloudflare/vite-plugin": "^1.54.11",
55
55
  "@hono/node-server": "^2.1.1",
56
56
  "@hono/trpc-server": "^0.4.2",
57
57
  "@tailwindcss/vite": "^4.3.3",
58
- "@trpc/server": "^11.18.0",
59
- "@vitejs/plugin-vue": "^6.0.8",
58
+ "@trpc/server": "^11.19.0",
59
+ "@vitejs/plugin-vue": "^6.0.9",
60
60
  "@vitejs/plugin-vue-jsx": "^5.1.6",
61
61
  "@vue/tsconfig": "^0.9.1",
62
62
  "consola": "^3.4.2",
63
- "hono": "^4.13.7",
63
+ "hono": "^4.13.8",
64
64
  "tailwindcss": "^4.3.3",
65
65
  "typescript": "~6.0.3",
66
66
  "vite": "^8.3.0",
67
67
  "vite-plugin-vue-devtools": "^8.2.1",
68
68
  "vite-tsconfig-paths": "^6.1.1",
69
69
  "vue-tsc": "3.3.11",
70
- "wrangler": "^4.131.1",
71
- "zod": "^4.6.2"
70
+ "wrangler": "^4.133.0",
71
+ "zod": "^4.6.5"
72
72
  }
73
73
  }
@@ -66,9 +66,9 @@
66
66
  "devDependencies": {
67
67
  "@hono/node-server": "^2.1.1",
68
68
  "consola": "^3.4.2",
69
- "hono": "^4.13.7",
69
+ "hono": "^4.13.8",
70
70
  "tsdown": "0.23.0",
71
- "wrangler": "^4.131.1",
72
- "zod": "^4.6.2"
71
+ "wrangler": "^4.133.0",
72
+ "zod": "^4.6.5"
73
73
  }
74
74
  }
@@ -9,6 +9,7 @@ export default withMermaid(defineConfig({
9
9
  outDir: '.vitepress/dist',
10
10
  srcExclude: ['CHANGELOG.md', 'learn/packages/examples/**', 'zh/learn/packages/examples/**'],
11
11
  title: 'repoctl',
12
+ titleTemplate: ':title — Official CLI for pnpm and Turborepo Monorepos',
12
13
  description: 'A practical CLI guide for setting up, checking, and maintaining pnpm and Turborepo monorepos.',
13
14
  lastUpdated: true,
14
15
  cleanUrls: true,
@@ -29,6 +29,14 @@ export function createPageHead({ page, title, description }: TransformContext):
29
29
  const socialImageAlt = isChinese
30
30
  ? 'repoctl:面向 pnpm 与 Turborepo monorepo 的任务型 CLI'
31
31
  : 'repoctl: task-first CLI for pnpm and Turborepo monorepos'
32
+ const jsonLd = {
33
+ '@context': 'https://schema.org',
34
+ '@graph': [
35
+ { '@type': 'Organization', 'name': 'repoctl', 'url': siteOrigin, 'logo': `${siteOrigin}/brand/repoctl-mark.svg`, 'sameAs': ['https://github.com/sonofmagic/repoctl', 'https://www.npmjs.com/package/repoctl'] },
36
+ { '@type': 'SoftwareApplication', 'name': 'repoctl', 'applicationCategory': 'DeveloperApplication', 'operatingSystem': 'macOS, Linux, Windows', 'url': siteOrigin, description, 'sameAs': ['https://github.com/sonofmagic/repoctl', 'https://www.npmjs.com/package/repoctl'], 'offers': { '@type': 'Offer', 'price': '0', 'priceCurrency': 'USD' } },
37
+ { '@type': 'WebSite', 'name': 'repoctl', 'url': siteOrigin, 'potentialAction': { '@type': 'SearchAction', 'target': `${siteOrigin}/reference/commands?q={search_term_string}`, 'query-input': 'required name=search_term_string' } },
38
+ ],
39
+ }
32
40
 
33
41
  return [
34
42
  ['link', { rel: 'canonical', href: canonical }],
@@ -45,10 +53,14 @@ export function createPageHead({ page, title, description }: TransformContext):
45
53
  ['meta', { property: 'og:image:width', content: '1200' }],
46
54
  ['meta', { property: 'og:image:height', content: '630' }],
47
55
  ['meta', { property: 'og:image:alt', content: socialImageAlt }],
56
+ ['meta', { property: 'og:image:type', content: 'image/png' }],
57
+ ['meta', { name: 'author', content: 'repoctl contributors' }],
58
+ ['meta', { name: 'application-name', content: 'repoctl' }],
48
59
  ['meta', { name: 'twitter:card', content: 'summary_large_image' }],
49
60
  ['meta', { name: 'twitter:title', content: title }],
50
61
  ['meta', { name: 'twitter:description', content: description }],
51
62
  ['meta', { name: 'twitter:image', content: socialImage }],
52
63
  ['meta', { name: 'twitter:image:alt', content: socialImageAlt }],
64
+ ['script', { type: 'application/ld+json' }, JSON.stringify(jsonLd)],
53
65
  ]
54
66
  }
@@ -5,6 +5,19 @@ import { homeContent } from '../../home/content'
5
5
 
6
6
  const props = defineProps<{ locale: DocsLocale }>()
7
7
  const content = computed(() => homeContent[props.locale])
8
+ const faq = computed(() => props.locale === 'zh'
9
+ ? [
10
+ ['repoctl 是什么?', 'repoctl 是面向 pnpm 与 Turborepo monorepo 的任务型 CLI,用于初始化、诊断、创建、校验和发布工作区。'],
11
+ ['如何安装 repoctl?', '在项目中运行 pnpm add -D repoctl,然后使用 pnpm exec repo init 和 pnpm exec repo doctor。'],
12
+ ['repoctl 与 pnpm、Turborepo 是什么关系?', 'pnpm 和 Turborepo 负责包管理与任务编排,repoctl 负责把团队约定、检查和日常操作组织成可复用任务。'],
13
+ ['repo doctor 与 repo check 有什么区别?', 'repo doctor 诊断仓库健康状况,repo check 规划并执行 lint、类型、构建和测试校验。'],
14
+ ]
15
+ : [
16
+ ['What is repoctl?', 'repoctl is a task-first CLI for initializing, diagnosing, creating, checking, and releasing pnpm and Turborepo monorepos.'],
17
+ ['How do I install repoctl?', 'Run pnpm add -D repoctl, then use pnpm exec repo init and pnpm exec repo doctor.'],
18
+ ['How does repoctl relate to pnpm and Turborepo?', 'pnpm and Turborepo provide package management and task orchestration; repoctl turns repository conventions and checks into reusable tasks.'],
19
+ ['What is the difference between repo doctor and repo check?', 'repo doctor diagnoses repository health, while repo check plans and runs lint, type, build, and test checks.'],
20
+ ])
8
21
  </script>
9
22
 
10
23
  <template>
@@ -108,5 +121,17 @@ const content = computed(() => homeContent[props.locale])
108
121
  </a>
109
122
  </div>
110
123
  </section>
124
+ <section class="repoctl-home__section repoctl-home__faq" aria-labelledby="repoctl-faq-title">
125
+ <h2 id="repoctl-faq-title">
126
+ {{ props.locale === 'zh' ? '常见问题' : 'Frequently asked questions' }}
127
+ </h2>
128
+ <details v-for="item in faq" :key="item[0]">
129
+ <summary>{{ item[0] }}</summary>
130
+ <p>{{ item[1] }}</p>
131
+ </details>
132
+ <script type="application/ld+json">
133
+ {{ JSON.stringify({ '@context': 'https://schema.org', '@type': 'FAQPage', "mainEntity": faq.map(item => ({ '@type': 'Question', "name": item[0], "acceptedAnswer": { '@type': 'Answer', "text": item[1] } })) }) }}
134
+ </script>
135
+ </section>
111
136
  </main>
112
137
  </template>
@@ -4,6 +4,18 @@ outline: deep
4
4
 
5
5
  # AI Documentation
6
6
 
7
+ ## Product facts
8
+
9
+ | Field | Value |
10
+ | ------------- | ---------------------------------------------------- |
11
+ | Product | repoctl, task-first CLI for monorepos |
12
+ | Official site | https://repoctl.icebreaker.top |
13
+ | Source | https://github.com/sonofmagic/repoctl |
14
+ | npm package | `repoctl` — https://www.npmjs.com/package/repoctl |
15
+ | Install | `pnpm add -D repoctl` |
16
+ | Core commands | `repo init`, `repo doctor`, `repo new`, `repo check` |
17
+ | Works with | pnpm workspaces and Turborepo |
18
+
7
19
  repoctl publishes AI-readable documentation alongside the human site.
8
20
 
9
21
  ## Recommended Entrypoints
@@ -2,7 +2,7 @@
2
2
  layout: page
3
3
  aside: false
4
4
  pageClass: repoctl-home-page
5
- title: repoctl
5
+ title: repoctl Official Monorepo CLI
6
6
  description: Task-first CLI for initializing, maintaining, validating, and releasing pnpm and Turborepo monorepos.
7
7
  ---
8
8
 
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: repoctl, pnpm, and Turborepo
3
+ description: Understand how repoctl complements pnpm and Turborepo in a modern monorepo toolchain.
4
+ ---
5
+
6
+ # repoctl, pnpm, and Turborepo
7
+
8
+ pnpm manages packages and dependencies. Turborepo orchestrates tasks and caching. repoctl provides repository workflows, conventions, diagnostics, templates, checks, reports, and release steps.
9
+
10
+ | Tool | Primary responsibility |
11
+ | --------- | -------------------------------------------- |
12
+ | pnpm | Workspace packages and dependency management |
13
+ | Turborepo | Task pipelines and caching |
14
+ | repoctl | Repository operations and guided checks |
15
+
16
+ See [what repoctl is](/start/what-is-repoctl) and [install repoctl](/start/install-repoctl).
@@ -37,7 +37,7 @@
37
37
  "typecheck": "vue-tsc -p tsconfig.json --noEmit"
38
38
  },
39
39
  "dependencies": {
40
- "vue": "^3.5.42"
40
+ "vue": "^3.5.43"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@braintree/sanitize-url": "^7.1.2",
@@ -52,6 +52,6 @@
52
52
  "vitepress-plugin-llms": "^1.14.0",
53
53
  "vitepress-plugin-mermaid": "^2.0.17",
54
54
  "vue-tsc": "^3.3.11",
55
- "wrangler": "^4.131.1"
55
+ "wrangler": "^4.133.0"
56
56
  }
57
57
  }
@@ -0,0 +1,5 @@
1
+ User-agent: *
2
+ Allow: /
3
+ Disallow: /_headers
4
+
5
+ Sitemap: https://repoctl.icebreaker.top/sitemap.xml
@@ -5,6 +5,8 @@ Use this section when repoctl is new to you. The shortest useful path is to inst
5
5
  ## Pick your first move
6
6
 
7
7
  - [Install and initialize](./install.md) if this is your first repoctl command.
8
+ - [What is repoctl?](./what-is-repoctl.md) for the product overview.
9
+ - [Install repoctl](./install-repoctl.md) for the shortest setup path.
8
10
  - [Run the first diagnosis](./diagnose.md) if repoctl is already installed.
9
11
  - [Choose the next task](./choose-next.md) after you have a diagnosis.
10
12
 
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: Install repoctl
3
+ description: Install repoctl in a pnpm monorepo, initialize managed defaults, and run your first repository diagnosis.
4
+ ---
5
+
6
+ # Install repoctl
7
+
8
+ Install repoctl as a development dependency so every teammate and CI job uses the same version.
9
+
10
+ ```bash
11
+ pnpm add -D repoctl
12
+ pnpm exec repo init
13
+ pnpm exec repo doctor
14
+ ```
15
+
16
+ Continue with [checks](/tasks/checks) or [adopting an existing workspace](/tasks/adopt-existing).
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: What is repoctl?
3
+ description: repoctl is the official task-first CLI for initializing, diagnosing, and maintaining pnpm and Turborepo monorepos.
4
+ ---
5
+
6
+ # What is repoctl?
7
+
8
+ repoctl is a task-first CLI for teams that build and maintain pnpm or Turborepo monorepos. It turns repository conventions into repeatable commands for initialization, diagnosis, project creation, checks, reports, and releases.
9
+
10
+ ## Start with repoctl
11
+
12
+ ```bash
13
+ pnpm add -D repoctl
14
+ pnpm exec repo init
15
+ pnpm exec repo doctor
16
+ ```
17
+
18
+ Read the [installation guide](/start/install-repoctl) or [command reference](/reference/commands).
@@ -2,7 +2,7 @@
2
2
  layout: page
3
3
  aside: false
4
4
  pageClass: repoctl-home-page
5
- title: repoctl
5
+ title: repoctl 官方 Monorepo CLI
6
6
  description: 面向 pnpm 与 Turborepo monorepo 的任务型 CLI。
7
7
  ---
8
8
 
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: repoctl、pnpm 与 Turborepo
3
+ description: 了解 repoctl 如何与 pnpm、Turborepo 组合,构成现代 monorepo 工具链。
4
+ ---
5
+
6
+ # repoctl、pnpm 与 Turborepo
7
+
8
+ pnpm 负责包和依赖,Turborepo 负责任务编排与缓存,repoctl 负责仓库流程、约定、诊断、模板、校验、报告和发布步骤。
9
+
10
+ | 工具 | 主要职责 |
11
+ | --------- | ---------------------- |
12
+ | pnpm | workspace 包与依赖管理 |
13
+ | Turborepo | 任务流水线与缓存 |
14
+ | repoctl | 仓库操作与引导式校验 |
15
+
16
+ 阅读[什么是 repoctl](/zh/start/what-is-repoctl)或[安装 repoctl](/zh/start/install-repoctl)。
@@ -5,6 +5,8 @@
5
5
  ## 选择第一次操作
6
6
 
7
7
  - 如果还没有运行过命令,阅读[安装并初始化](./install.md)。
8
+ - 阅读[什么是 repoctl?](./what-is-repoctl.md)了解产品定位。
9
+ - 阅读[安装 repoctl](./install-repoctl.md)快速完成设置。
8
10
  - 如果已经安装 repoctl,直接[运行第一次诊断](./diagnose.md)。
9
11
  - 得到诊断结果后,进入[选择下一项任务](./choose-next.md)。
10
12
 
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: 安装 repoctl
3
+ description: 在 pnpm monorepo 中安装 repoctl,初始化受管默认值并运行第一次仓库诊断。
4
+ ---
5
+
6
+ # 安装 repoctl
7
+
8
+ 把 repoctl 安装为开发依赖,让成员和 CI 使用同一个版本。
9
+
10
+ ```bash
11
+ pnpm add -D repoctl
12
+ pnpm exec repo init
13
+ pnpm exec repo doctor
14
+ ```
15
+
16
+ 接着阅读[运行校验](/zh/tasks/checks)或[接入已有 workspace](/zh/tasks/adopt-existing)。
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: 什么是 repoctl?
3
+ description: repoctl 是面向 pnpm 与 Turborepo monorepo 的官方任务型 CLI,用于初始化、诊断和维护仓库。
4
+ ---
5
+
6
+ # 什么是 repoctl?
7
+
8
+ repoctl 把仓库约定变成可重复执行的初始化、诊断、创建、校验、报告和发布命令。
9
+
10
+ ```bash
11
+ pnpm add -D repoctl
12
+ pnpm exec repo init
13
+ pnpm exec repo doctor
14
+ ```
15
+
16
+ 继续阅读[安装 repoctl](/zh/start/install-repoctl)或[命令速查](/zh/reference/commands)。
@@ -59,13 +59,13 @@
59
59
  "types": "./dist/index.d.ts"
60
60
  },
61
61
  "devDependencies": {
62
- "@vitejs/plugin-vue": "^6.0.8",
63
- "@vue/test-utils": "^2.5.0",
62
+ "@vitejs/plugin-vue": "^6.0.9",
63
+ "@vue/test-utils": "^2.5.1",
64
64
  "@vue/tsconfig": "^0.9.1",
65
- "jsdom": "^30.0.1",
65
+ "jsdom": "^30.1.0",
66
66
  "vite": "^8.3.0",
67
67
  "vite-plugin-dts": "^5.1.0",
68
- "vue": "^3.5.42",
68
+ "vue": "^3.5.43",
69
69
  "vue-tsc": "^3.3.11"
70
70
  }
71
71
  }