@icebreakers/monorepo 3.1.5 → 3.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.
- package/assets/monorepo.config.ts +1 -1
- package/assets/package.json +2 -2
- package/dist/cli.cjs +2 -1
- package/dist/cli.mjs +2 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{upgrade-C9C_ciHG.cjs → upgrade-BnrzVPeg.cjs} +7 -5
- package/dist/{upgrade-B6Ko1TFE.mjs → upgrade-DmdJLHLb.mjs} +7 -5
- package/package.json +2 -2
- package/templates/apps/client/package.json +5 -5
- package/templates/apps/server/package.json +1 -1
- package/templates/apps/website/index.md +2 -2
- package/templates/apps/website/monorepo/publish.md +7 -2
- package/templates/apps/website/package.json +2 -2
- package/templates/apps/website/why/publish-basic-npm-package.md +1 -1
- package/templates/packages/vue-lib-template/package.json +3 -3
package/assets/package.json
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@icebreakers/monorepo": "workspace:*",
|
|
49
49
|
"@icebreakers/stylelint-config": "^1.2.3",
|
|
50
50
|
"@types/fs-extra": "^11.0.4",
|
|
51
|
-
"@types/node": "^24.10.
|
|
51
|
+
"@types/node": "^24.10.3",
|
|
52
52
|
"@types/semver": "^7.7.1",
|
|
53
53
|
"@vitest/coverage-v8": "~4.0.15",
|
|
54
54
|
"ci-info": "^4.3.1",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"pkg-types": "^2.3.0",
|
|
66
66
|
"rimraf": "^6.1.2",
|
|
67
67
|
"stylelint": "^16.26.1",
|
|
68
|
-
"tsdown": "0.17.
|
|
68
|
+
"tsdown": "0.17.3",
|
|
69
69
|
"tslib": "^2.8.1",
|
|
70
70
|
"tsup": "^8.5.1",
|
|
71
71
|
"tsx": "^4.21.0",
|
package/dist/cli.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_upgrade = require('./upgrade-
|
|
1
|
+
const require_upgrade = require('./upgrade-BnrzVPeg.cjs');
|
|
2
2
|
let node_process = require("node:process");
|
|
3
3
|
node_process = require_upgrade.__toESM(node_process);
|
|
4
4
|
let __inquirer_input = require("@inquirer/input");
|
|
@@ -50,6 +50,7 @@ commander.program.command("ai").description("AI 助手工具集").command("creat
|
|
|
50
50
|
const tasksFile = opts.tasks ?? aiConfig?.tasksFile;
|
|
51
51
|
const name$1 = opts.name;
|
|
52
52
|
if (Boolean(tasksFile && !opts.output && !opts.name)) {
|
|
53
|
+
if (!tasksFile) throw new Error("tasks file path is required when using tasks mode");
|
|
53
54
|
await require_upgrade.generateAgenticTemplates(await require_upgrade.loadAgenticTasks(tasksFile, cwd), {
|
|
54
55
|
cwd,
|
|
55
56
|
baseDir,
|
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as defaultAgenticBaseDir, C as name, M as generateAgenticTemplates, N as loadAgenticTasks, O as resolveCommandConfig, P as logger, T as cleanProjects, c as getCreateChoices, i as init, j as generateAgenticTemplate, k as createTimestampFolderName, n as syncNpmMirror, o as createNewProject, r as setVscodeBinaryMirror, s as defaultTemplate, t as upgradeMonorepo, w as version } from "./upgrade-
|
|
1
|
+
import { A as defaultAgenticBaseDir, C as name, M as generateAgenticTemplates, N as loadAgenticTasks, O as resolveCommandConfig, P as logger, T as cleanProjects, c as getCreateChoices, i as init, j as generateAgenticTemplate, k as createTimestampFolderName, n as syncNpmMirror, o as createNewProject, r as setVscodeBinaryMirror, s as defaultTemplate, t as upgradeMonorepo, w as version } from "./upgrade-DmdJLHLb.mjs";
|
|
2
2
|
import process from "node:process";
|
|
3
3
|
import input from "@inquirer/input";
|
|
4
4
|
import select from "@inquirer/select";
|
|
@@ -47,6 +47,7 @@ program.command("ai").description("AI 助手工具集").command("create").alias(
|
|
|
47
47
|
const tasksFile = opts.tasks ?? aiConfig?.tasksFile;
|
|
48
48
|
const name$1 = opts.name;
|
|
49
49
|
if (Boolean(tasksFile && !opts.output && !opts.name)) {
|
|
50
|
+
if (!tasksFile) throw new Error("tasks file path is required when using tasks mode");
|
|
50
51
|
await generateAgenticTemplates(await loadAgenticTasks(tasksFile, cwd), {
|
|
51
52
|
cwd,
|
|
52
53
|
baseDir,
|
package/dist/index.cjs
CHANGED
package/dist/index.d.cts
CHANGED
package/dist/index.d.mts
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as defaultAgenticBaseDir, C as name, D as loadMonorepoConfig, E as defineMonorepoConfig, F as getWorkspaceData, I as getWorkspacePackages, L as GitClient, M as generateAgenticTemplates, N as loadAgenticTasks, O as resolveCommandConfig, P as logger, S as templatesDir, T as cleanProjects, _ as toWorkspaceGitignorePath, a as createContext, b as packageDir, c as getCreateChoices, d as escapeStringRegexp, f as isMatch, g as toPublishGitignorePath, h as isGitignoreFile, i as init, j as generateAgenticTemplate, k as createTimestampFolderName, l as getTemplateMap, m as isFileChanged, n as syncNpmMirror, o as createNewProject, p as getFileHash, r as setVscodeBinaryMirror, t as upgradeMonorepo, u as templateMap, v as isIgnorableFsError, w as version, x as rootDir, y as assetsDir } from "./upgrade-
|
|
1
|
+
import { A as defaultAgenticBaseDir, C as name, D as loadMonorepoConfig, E as defineMonorepoConfig, F as getWorkspaceData, I as getWorkspacePackages, L as GitClient, M as generateAgenticTemplates, N as loadAgenticTasks, O as resolveCommandConfig, P as logger, S as templatesDir, T as cleanProjects, _ as toWorkspaceGitignorePath, a as createContext, b as packageDir, c as getCreateChoices, d as escapeStringRegexp, f as isMatch, g as toPublishGitignorePath, h as isGitignoreFile, i as init, j as generateAgenticTemplate, k as createTimestampFolderName, l as getTemplateMap, m as isFileChanged, n as syncNpmMirror, o as createNewProject, p as getFileHash, r as setVscodeBinaryMirror, t as upgradeMonorepo, u as templateMap, v as isIgnorableFsError, w as version, x as rootDir, y as assetsDir } from "./upgrade-DmdJLHLb.mjs";
|
|
2
2
|
|
|
3
3
|
export { GitClient, assetsDir, cleanProjects, createContext, createNewProject, createTimestampFolderName, defaultAgenticBaseDir, defineMonorepoConfig, escapeStringRegexp, generateAgenticTemplate, generateAgenticTemplates, getCreateChoices, getFileHash, getTemplateMap, getWorkspaceData, getWorkspacePackages, init, isFileChanged, isGitignoreFile, isIgnorableFsError, isMatch, loadAgenticTasks, loadMonorepoConfig, logger, name, packageDir, resolveCommandConfig, rootDir, setVscodeBinaryMirror, syncNpmMirror, templateMap, templatesDir, toPublishGitignorePath, toWorkspaceGitignorePath, upgradeMonorepo, version };
|
|
@@ -572,10 +572,11 @@ async function resolveCommandConfig(name$1, cwd) {
|
|
|
572
572
|
//#region src/commands/clean.ts
|
|
573
573
|
var import_set_value$5 = /* @__PURE__ */ __toESM(require_set_value(), 1);
|
|
574
574
|
function mergeCleanConfig(base, overrides) {
|
|
575
|
-
|
|
575
|
+
const normalizedBase = base ?? {};
|
|
576
|
+
if (!overrides) return normalizedBase;
|
|
576
577
|
const definedOverrides = Object.fromEntries(Object.entries(overrides).filter(([, value]) => value !== void 0));
|
|
577
578
|
return {
|
|
578
|
-
...
|
|
579
|
+
...normalizedBase,
|
|
579
580
|
...definedOverrides
|
|
580
581
|
};
|
|
581
582
|
}
|
|
@@ -584,7 +585,7 @@ function mergeCleanConfig(base, overrides) {
|
|
|
584
585
|
*/
|
|
585
586
|
async function cleanProjects(cwd, overrides) {
|
|
586
587
|
const cleanConfig = mergeCleanConfig(await resolveCommandConfig("clean", cwd), overrides);
|
|
587
|
-
const { packages, workspaceDir } = await getWorkspaceData(cwd, cleanConfig?.includePrivate ? { ignorePrivatePackage: false } : void 0);
|
|
588
|
+
const { packages, workspaceDir } = await getWorkspaceData(cwd, cleanConfig?.includePrivate ?? true ? { ignorePrivatePackage: false } : void 0);
|
|
588
589
|
const filteredPackages = packages.filter((pkg) => {
|
|
589
590
|
const name$2 = pkg.manifest.name ?? "";
|
|
590
591
|
if (!name$2) return true;
|
|
@@ -604,7 +605,8 @@ async function cleanProjects(cwd, overrides) {
|
|
|
604
605
|
};
|
|
605
606
|
})
|
|
606
607
|
});
|
|
607
|
-
const
|
|
608
|
+
const readmeZh = pathe.default.resolve(workspaceDir, "README.zh-CN.md");
|
|
609
|
+
const candidates = Array.from(new Set([...cleanDirs.filter(Boolean), readmeZh]));
|
|
608
610
|
await Promise.all(candidates.map(async (dir) => {
|
|
609
611
|
if (await fs_extra.default.pathExists(dir)) await fs_extra.default.remove(dir);
|
|
610
612
|
}));
|
|
@@ -617,7 +619,7 @@ async function cleanProjects(cwd, overrides) {
|
|
|
617
619
|
//#endregion
|
|
618
620
|
//#region package.json
|
|
619
621
|
var name = "@icebreakers/monorepo";
|
|
620
|
-
var version = "3.1.
|
|
622
|
+
var version = "3.1.7";
|
|
621
623
|
|
|
622
624
|
//#endregion
|
|
623
625
|
//#region src/constants.ts
|
|
@@ -560,10 +560,11 @@ async function resolveCommandConfig(name$1, cwd) {
|
|
|
560
560
|
//#region src/commands/clean.ts
|
|
561
561
|
var import_set_value$5 = /* @__PURE__ */ __toESM(require_set_value(), 1);
|
|
562
562
|
function mergeCleanConfig(base, overrides) {
|
|
563
|
-
|
|
563
|
+
const normalizedBase = base ?? {};
|
|
564
|
+
if (!overrides) return normalizedBase;
|
|
564
565
|
const definedOverrides = Object.fromEntries(Object.entries(overrides).filter(([, value]) => value !== void 0));
|
|
565
566
|
return {
|
|
566
|
-
...
|
|
567
|
+
...normalizedBase,
|
|
567
568
|
...definedOverrides
|
|
568
569
|
};
|
|
569
570
|
}
|
|
@@ -572,7 +573,7 @@ function mergeCleanConfig(base, overrides) {
|
|
|
572
573
|
*/
|
|
573
574
|
async function cleanProjects(cwd, overrides) {
|
|
574
575
|
const cleanConfig = mergeCleanConfig(await resolveCommandConfig("clean", cwd), overrides);
|
|
575
|
-
const { packages, workspaceDir } = await getWorkspaceData(cwd, cleanConfig?.includePrivate ? { ignorePrivatePackage: false } : void 0);
|
|
576
|
+
const { packages, workspaceDir } = await getWorkspaceData(cwd, cleanConfig?.includePrivate ?? true ? { ignorePrivatePackage: false } : void 0);
|
|
576
577
|
const filteredPackages = packages.filter((pkg) => {
|
|
577
578
|
const name$2 = pkg.manifest.name ?? "";
|
|
578
579
|
if (!name$2) return true;
|
|
@@ -592,7 +593,8 @@ async function cleanProjects(cwd, overrides) {
|
|
|
592
593
|
};
|
|
593
594
|
})
|
|
594
595
|
});
|
|
595
|
-
const
|
|
596
|
+
const readmeZh = path.resolve(workspaceDir, "README.zh-CN.md");
|
|
597
|
+
const candidates = Array.from(new Set([...cleanDirs.filter(Boolean), readmeZh]));
|
|
596
598
|
await Promise.all(candidates.map(async (dir) => {
|
|
597
599
|
if (await fs.pathExists(dir)) await fs.remove(dir);
|
|
598
600
|
}));
|
|
@@ -605,7 +607,7 @@ async function cleanProjects(cwd, overrides) {
|
|
|
605
607
|
//#endregion
|
|
606
608
|
//#region package.json
|
|
607
609
|
var name = "@icebreakers/monorepo";
|
|
608
|
-
var version = "3.1.
|
|
610
|
+
var version = "3.1.7";
|
|
609
611
|
|
|
610
612
|
//#endregion
|
|
611
613
|
//#region src/constants.ts
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@icebreakers/monorepo",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.7",
|
|
5
5
|
"description": "The icebreaker's monorepo manager",
|
|
6
6
|
"author": "ice breaker <1324318532@qq.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"@pnpm/workspace.read-manifest": "^1000.2.8",
|
|
70
70
|
"c12": "^3.3.2",
|
|
71
71
|
"commander": "^14.0.2",
|
|
72
|
-
"comment-json": "^4.
|
|
72
|
+
"comment-json": "^4.5.0",
|
|
73
73
|
"consola": "^3.4.2",
|
|
74
74
|
"execa": "^9.6.1",
|
|
75
75
|
"fs-extra": "^11.3.2",
|
|
@@ -26,26 +26,26 @@
|
|
|
26
26
|
"tailwind-variants": "^3.2.2",
|
|
27
27
|
"vue": "^3.5.25",
|
|
28
28
|
"vue-i18n": "^11.2.2",
|
|
29
|
-
"vue-router": "^4.6.
|
|
29
|
+
"vue-router": "^4.6.4"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@cloudflare/vite-plugin": "^1.17.
|
|
32
|
+
"@cloudflare/vite-plugin": "^1.17.1",
|
|
33
33
|
"@hono/node-server": "^1.19.7",
|
|
34
34
|
"@hono/trpc-server": "^0.4.1",
|
|
35
|
-
"@tailwindcss/vite": "^4.1.
|
|
35
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
36
36
|
"@trpc/server": "^11.7.2",
|
|
37
37
|
"@vitejs/plugin-vue": "^6.0.2",
|
|
38
38
|
"@vitejs/plugin-vue-jsx": "^5.1.2",
|
|
39
39
|
"@vue/tsconfig": "^0.8.1",
|
|
40
40
|
"hono": "^4.10.8",
|
|
41
|
-
"tailwindcss": "^4.1.
|
|
41
|
+
"tailwindcss": "^4.1.18",
|
|
42
42
|
"typescript": "~5.9.3",
|
|
43
43
|
"unplugin-vue-router": "^0.19.0",
|
|
44
44
|
"vite": "^7.2.7",
|
|
45
45
|
"vite-plugin-vue-devtools": "^8.0.5",
|
|
46
46
|
"vite-tsconfig-paths": "^5.1.4",
|
|
47
47
|
"vue-tsc": "3.1.8",
|
|
48
|
-
"wrangler": "^4.
|
|
48
|
+
"wrangler": "^4.54.0",
|
|
49
49
|
"zod": "^4.1.13"
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -18,7 +18,7 @@ layout: doc
|
|
|
18
18
|
|
|
19
19
|
1. **拉取模板**:[GitHub](https://github.com/sonofmagic/monorepo-template) 右上角 `Use this template`,或克隆源码。
|
|
20
20
|
2. **安装依赖**:在 `pnpm-workspace.yaml` 所在目录执行 `pnpm install`(需要 Node.js ≥ 20,推荐 `npm i -g pnpm`)。
|
|
21
|
-
3.
|
|
21
|
+
3. **可选清理**:直接运行 `npx -y @icebreakers/monorepo@latest clean` 远程执行清理,移除演示包后再执行 `pnpm install`(避免依赖本地构建 `monorepo`);如已安装依赖,也可使用 `pnpm script:clean`。
|
|
22
22
|
4. **初始化元数据**:`pnpm script:init` 会批量更新 `package.json`、`README.md` 等公共信息。
|
|
23
23
|
|
|
24
24
|
## 仓库结构速览
|
|
@@ -49,7 +49,7 @@ layout: doc
|
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
51
|
npx monorepo new # 创建子包/应用
|
|
52
|
-
npx monorepo clean
|
|
52
|
+
npx -y @icebreakers/monorepo@latest clean # 远程清理已勾选的子项目,避免依赖本地构建
|
|
53
53
|
npx monorepo sync # 同步所有包到 npmmirror
|
|
54
54
|
npx monorepo mirror # 写入 VS Code 镜像配置
|
|
55
55
|
npx monorepo up # 从最新模板同步配置文件
|
|
@@ -98,8 +98,11 @@ jobs:
|
|
|
98
98
|
- uses: pnpm/action-setup@v4
|
|
99
99
|
- uses: actions/setup-node@v4
|
|
100
100
|
with:
|
|
101
|
-
|
|
101
|
+
# 这是为了使用新版本的 npm, 只有 npm@11.5.x 以上版本才支持 OIDC
|
|
102
|
+
# 否则你就必须使用 npm i -g npm@latest 来升级 npm 版本
|
|
103
|
+
node-version: 24
|
|
102
104
|
cache: pnpm
|
|
105
|
+
registry-url: https://registry.npmjs.org
|
|
103
106
|
- run: pnpm install
|
|
104
107
|
- name: Create Release Pull Request or Publish to npm
|
|
105
108
|
uses: changesets/action@v1
|
|
@@ -107,11 +110,13 @@ jobs:
|
|
|
107
110
|
publish: pnpm publish-packages
|
|
108
111
|
env:
|
|
109
112
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
110
|
-
|
|
113
|
+
# npm/action-oidc-auth 会设置 NODE_AUTH_TOKEN 供 publish 使用
|
|
111
114
|
```
|
|
112
115
|
|
|
113
116
|
`pnpm publish-packages` 为模板内脚本,可替换为自定义构建+发布流程。
|
|
114
117
|
|
|
118
|
+
> 说明:npm 现行 token 默认 90 天过期,推荐在 CI 中使用 OIDC(如上)动态获取 `NODE_AUTH_TOKEN`,无需手动传入 `NPM_TOKEN`。若使用自托管或其他 CI,需要确保工作流具备 `id-token: write` 权限。
|
|
119
|
+
|
|
115
120
|
## 与其他方案对比
|
|
116
121
|
|
|
117
122
|
| 能力 / 工具 | changesets | lerna 经典模式 | 手写脚本 |
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@braintree/sanitize-url": "^7.1.1",
|
|
29
|
-
"@tailwindcss/vite": "^4.1.
|
|
29
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
30
30
|
"cytoscape": "^3.33.1",
|
|
31
31
|
"cytoscape-cose-bilkent": "^4.1.0",
|
|
32
32
|
"dayjs": "^1.11.19",
|
|
33
33
|
"debug": "^4.4.3",
|
|
34
34
|
"mermaid": "^11.12.2",
|
|
35
|
-
"tailwindcss": "^4.1.
|
|
35
|
+
"tailwindcss": "^4.1.18",
|
|
36
36
|
"vitepress": "^1.6.4",
|
|
37
37
|
"vitepress-plugin-mermaid": "^2.0.17"
|
|
38
38
|
}
|
|
@@ -68,7 +68,7 @@ registry.npmjs.org/:_authToken=npm_hashhashhashhashhashhashhashhashhash
|
|
|
68
68
|
|
|
69
69
|
假如这一行存在,说明你本地的 `npm Access Token` 就设置好了,然后你才有发包的权限。
|
|
70
70
|
|
|
71
|
-
> 你也可以在 `https://www.npmjs.com/settings/<你的用户名>/tokens` 中管理你的 `token`,给不同的 `token`
|
|
71
|
+
> 你也可以在 `https://www.npmjs.com/settings/<你的用户名>/tokens` 中管理你的 `token`,给不同的 `token` 设置不同的作用域,有效期(目前最长 90 天)和 `ip` 限制,帮助你适配正常开发,`CI/CD`,`Token` 分发的各种场景;如需避免手动轮换,CI 场景推荐使用 npm 官方的 OIDC 方案获取临时 `NODE_AUTH_TOKEN`,并在工作流开启 `id-token: write` 权限。
|
|
72
72
|
|
|
73
73
|
同样发私有源包也是同理:
|
|
74
74
|
|
|
@@ -45,17 +45,17 @@
|
|
|
45
45
|
"types": "./dist/index.d.ts"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@tailwindcss/vite": "^4.1.
|
|
48
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
49
49
|
"@vitejs/plugin-vue": "^6.0.2",
|
|
50
50
|
"@vue/test-utils": "^2.4.6",
|
|
51
51
|
"@vue/tsconfig": "^0.8.1",
|
|
52
52
|
"jsdom": "^27.3.0",
|
|
53
|
-
"tailwindcss": "^4.1.
|
|
53
|
+
"tailwindcss": "^4.1.18",
|
|
54
54
|
"unplugin-vue-router": "^0.19.0",
|
|
55
55
|
"vite": "^7.2.7",
|
|
56
56
|
"vite-plugin-dts": "^4.5.4",
|
|
57
57
|
"vue": "^3.5.25",
|
|
58
|
-
"vue-router": "^4.6.
|
|
58
|
+
"vue-router": "^4.6.4",
|
|
59
59
|
"vue-tsc": "^3.1.8"
|
|
60
60
|
}
|
|
61
61
|
}
|