@icebreakers/monorepo 0.6.0 → 0.6.2
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/package.json +2 -2
- package/dist/{chunk-G24QWDPQ.js → chunk-UFDFNNMJ.js} +32 -24
- package/dist/cli.cjs +36 -27
- package/dist/cli.js +9 -6
- package/dist/index.cjs +40 -31
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +7 -5
- package/package.json +3 -2
- package/templates/bar/package.json +45 -0
- package/templates/bar/src/index.ts +17 -0
- package/templates/bar/test/index.test.ts +7 -0
- package/templates/bar/tsconfig.json +15 -0
- package/templates/bar/tsup.config.ts +13 -0
- package/templates/bar/vitest.config.ts +15 -0
package/assets/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"type": "module",
|
|
4
4
|
"version": "0.0.0",
|
|
5
5
|
"private": true,
|
|
6
|
-
"packageManager": "pnpm@9.12.
|
|
6
|
+
"packageManager": "pnpm@9.12.1",
|
|
7
7
|
"author": "ice breaker <1324318532@qq.com>",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@types/lodash": "^4.17.10",
|
|
47
47
|
"@types/lodash-es": "^4.17.12",
|
|
48
48
|
"@types/micromatch": "^4.0.9",
|
|
49
|
-
"@types/node": "^22.7.
|
|
49
|
+
"@types/node": "^22.7.5",
|
|
50
50
|
"@vitest/coverage-v8": "~2.0.5",
|
|
51
51
|
"ci-info": "^4.0.0",
|
|
52
52
|
"cross-env": "^7.0.3",
|
|
@@ -13,30 +13,12 @@ import set from "set-value";
|
|
|
13
13
|
|
|
14
14
|
// package.json
|
|
15
15
|
var name = "@icebreakers/monorepo";
|
|
16
|
-
var version = "0.6.
|
|
16
|
+
var version = "0.6.2";
|
|
17
17
|
|
|
18
18
|
// src/logger.ts
|
|
19
19
|
import { createConsola } from "consola";
|
|
20
20
|
var logger = createConsola();
|
|
21
21
|
|
|
22
|
-
// src/md5.ts
|
|
23
|
-
import crypto from "node:crypto";
|
|
24
|
-
function getFileHash(data) {
|
|
25
|
-
const hashSum = crypto.createHash("md5");
|
|
26
|
-
hashSum.update(data);
|
|
27
|
-
return hashSum.digest("hex");
|
|
28
|
-
}
|
|
29
|
-
function isFileChanged(src, dest) {
|
|
30
|
-
try {
|
|
31
|
-
const currentHash = getFileHash(src);
|
|
32
|
-
const previousHash = getFileHash(dest);
|
|
33
|
-
return currentHash !== previousHash;
|
|
34
|
-
} catch (err) {
|
|
35
|
-
console.error("Error calculating file hash:", err);
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
22
|
// src/monorepo/git.ts
|
|
41
23
|
import get from "get-value";
|
|
42
24
|
import gitUrlParse from "git-url-parse";
|
|
@@ -96,7 +78,7 @@ var scripts = {
|
|
|
96
78
|
var scriptsEntries = Object.entries(scripts);
|
|
97
79
|
|
|
98
80
|
// src/targets.ts
|
|
99
|
-
function
|
|
81
|
+
function getAssetTargets(raw) {
|
|
100
82
|
const list = [
|
|
101
83
|
".changeset",
|
|
102
84
|
".husky",
|
|
@@ -129,7 +111,25 @@ function getTargets(raw) {
|
|
|
129
111
|
return list;
|
|
130
112
|
}
|
|
131
113
|
|
|
132
|
-
// src/utils.ts
|
|
114
|
+
// src/utils/md5.ts
|
|
115
|
+
import crypto from "node:crypto";
|
|
116
|
+
function getFileHash(data) {
|
|
117
|
+
const hashSum = crypto.createHash("md5");
|
|
118
|
+
hashSum.update(data);
|
|
119
|
+
return hashSum.digest("hex");
|
|
120
|
+
}
|
|
121
|
+
function isFileChanged(src, dest) {
|
|
122
|
+
try {
|
|
123
|
+
const currentHash = getFileHash(src);
|
|
124
|
+
const previousHash = getFileHash(dest);
|
|
125
|
+
return currentHash !== previousHash;
|
|
126
|
+
} catch (err) {
|
|
127
|
+
console.error("Error calculating file hash:", err);
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// src/utils/regexp.ts
|
|
133
133
|
function escapeStringRegexp(str) {
|
|
134
134
|
return str.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
135
135
|
}
|
|
@@ -147,6 +147,7 @@ var queue = new PQueue({ concurrency: 1 });
|
|
|
147
147
|
var __filename2 = fileURLToPath(import.meta.url);
|
|
148
148
|
var __dirname2 = path.dirname(__filename2);
|
|
149
149
|
var assetsDir = path.join(__dirname2, "../assets");
|
|
150
|
+
var templatesDir = path.join(__dirname2, "../templates");
|
|
150
151
|
var cwd = process.cwd();
|
|
151
152
|
function setPkgJson(sourcePkgJson, targetPkgJson) {
|
|
152
153
|
const packageManager = get2(sourcePkgJson, "packageManager", { default: "" });
|
|
@@ -170,14 +171,14 @@ function setPkgJson(sourcePkgJson, targetPkgJson) {
|
|
|
170
171
|
function confirmOverwrite(filename) {
|
|
171
172
|
return confirm({ message: `${pc.greenBright(filename)} \u6587\u4EF6\u5185\u5BB9\u53D1\u751F\u6539\u53D8,\u662F\u5426\u8986\u76D6?`, default: false });
|
|
172
173
|
}
|
|
173
|
-
async function
|
|
174
|
+
async function upgradeMonorepo(opts) {
|
|
174
175
|
const { outDir = "", raw, interactive } = opts;
|
|
175
176
|
const absOutDir = path.isAbsolute(outDir) ? outDir : path.join(cwd, outDir);
|
|
176
177
|
const gitClient = new GitClient({
|
|
177
178
|
baseDir: cwd
|
|
178
179
|
});
|
|
179
180
|
const repoName = await gitClient.getRepoName();
|
|
180
|
-
let targets =
|
|
181
|
+
let targets = getAssetTargets(raw);
|
|
181
182
|
if (interactive) {
|
|
182
183
|
targets = await checkbox({
|
|
183
184
|
message: "\u9009\u62E9\u4F60\u9700\u8981\u7684\u6587\u4EF6",
|
|
@@ -248,6 +249,12 @@ async function main(opts) {
|
|
|
248
249
|
});
|
|
249
250
|
}
|
|
250
251
|
}
|
|
252
|
+
async function createNewProject(name2) {
|
|
253
|
+
const defaultTemplate = "bar";
|
|
254
|
+
const targetTemplate = name2 ?? defaultTemplate;
|
|
255
|
+
await fs.copy(path.join(templatesDir, defaultTemplate), path.join(cwd, targetTemplate));
|
|
256
|
+
logger.success(`${targetTemplate} \u9879\u76EE\u521B\u5EFA\u6210\u529F\uFF01`);
|
|
257
|
+
}
|
|
251
258
|
|
|
252
259
|
export {
|
|
253
260
|
name,
|
|
@@ -255,5 +262,6 @@ export {
|
|
|
255
262
|
logger,
|
|
256
263
|
GitClient,
|
|
257
264
|
setPkgJson,
|
|
258
|
-
|
|
265
|
+
upgradeMonorepo,
|
|
266
|
+
createNewProject
|
|
259
267
|
};
|
package/dist/cli.cjs
CHANGED
|
@@ -32,7 +32,7 @@ var import_commander = require("commander");
|
|
|
32
32
|
|
|
33
33
|
// package.json
|
|
34
34
|
var name = "@icebreakers/monorepo";
|
|
35
|
-
var version = "0.6.
|
|
35
|
+
var version = "0.6.2";
|
|
36
36
|
|
|
37
37
|
// src/lib.ts
|
|
38
38
|
var import_node_process = __toESM(require("process"), 1);
|
|
@@ -51,24 +51,6 @@ var import_set_value = __toESM(require("set-value"), 1);
|
|
|
51
51
|
var import_consola = require("consola");
|
|
52
52
|
var logger = (0, import_consola.createConsola)();
|
|
53
53
|
|
|
54
|
-
// src/md5.ts
|
|
55
|
-
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
56
|
-
function getFileHash(data) {
|
|
57
|
-
const hashSum = import_node_crypto.default.createHash("md5");
|
|
58
|
-
hashSum.update(data);
|
|
59
|
-
return hashSum.digest("hex");
|
|
60
|
-
}
|
|
61
|
-
function isFileChanged(src, dest) {
|
|
62
|
-
try {
|
|
63
|
-
const currentHash = getFileHash(src);
|
|
64
|
-
const previousHash = getFileHash(dest);
|
|
65
|
-
return currentHash !== previousHash;
|
|
66
|
-
} catch (err) {
|
|
67
|
-
console.error("Error calculating file hash:", err);
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
54
|
// src/monorepo/git.ts
|
|
73
55
|
var import_get_value = __toESM(require("get-value"), 1);
|
|
74
56
|
var import_git_url_parse = __toESM(require("git-url-parse"), 1);
|
|
@@ -128,7 +110,7 @@ var scripts = {
|
|
|
128
110
|
var scriptsEntries = Object.entries(scripts);
|
|
129
111
|
|
|
130
112
|
// src/targets.ts
|
|
131
|
-
function
|
|
113
|
+
function getAssetTargets(raw) {
|
|
132
114
|
const list = [
|
|
133
115
|
".changeset",
|
|
134
116
|
".husky",
|
|
@@ -161,7 +143,25 @@ function getTargets(raw) {
|
|
|
161
143
|
return list;
|
|
162
144
|
}
|
|
163
145
|
|
|
164
|
-
// src/utils.ts
|
|
146
|
+
// src/utils/md5.ts
|
|
147
|
+
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
148
|
+
function getFileHash(data) {
|
|
149
|
+
const hashSum = import_node_crypto.default.createHash("md5");
|
|
150
|
+
hashSum.update(data);
|
|
151
|
+
return hashSum.digest("hex");
|
|
152
|
+
}
|
|
153
|
+
function isFileChanged(src, dest) {
|
|
154
|
+
try {
|
|
155
|
+
const currentHash = getFileHash(src);
|
|
156
|
+
const previousHash = getFileHash(dest);
|
|
157
|
+
return currentHash !== previousHash;
|
|
158
|
+
} catch (err) {
|
|
159
|
+
console.error("Error calculating file hash:", err);
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// src/utils/regexp.ts
|
|
165
165
|
function escapeStringRegexp(str) {
|
|
166
166
|
return str.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
167
167
|
}
|
|
@@ -179,6 +179,7 @@ var queue = new import_p_queue.default({ concurrency: 1 });
|
|
|
179
179
|
var __filename2 = (0, import_node_url.fileURLToPath)(importMetaUrl);
|
|
180
180
|
var __dirname = import_pathe.default.dirname(__filename2);
|
|
181
181
|
var assetsDir = import_pathe.default.join(__dirname, "../assets");
|
|
182
|
+
var templatesDir = import_pathe.default.join(__dirname, "../templates");
|
|
182
183
|
var cwd = import_node_process.default.cwd();
|
|
183
184
|
function setPkgJson(sourcePkgJson, targetPkgJson) {
|
|
184
185
|
const packageManager = (0, import_get_value2.default)(sourcePkgJson, "packageManager", { default: "" });
|
|
@@ -202,14 +203,14 @@ function setPkgJson(sourcePkgJson, targetPkgJson) {
|
|
|
202
203
|
function confirmOverwrite(filename) {
|
|
203
204
|
return (0, import_confirm.default)({ message: `${import_picocolors.default.greenBright(filename)} \u6587\u4EF6\u5185\u5BB9\u53D1\u751F\u6539\u53D8,\u662F\u5426\u8986\u76D6?`, default: false });
|
|
204
205
|
}
|
|
205
|
-
async function
|
|
206
|
+
async function upgradeMonorepo(opts) {
|
|
206
207
|
const { outDir = "", raw, interactive } = opts;
|
|
207
208
|
const absOutDir = import_pathe.default.isAbsolute(outDir) ? outDir : import_pathe.default.join(cwd, outDir);
|
|
208
209
|
const gitClient = new GitClient({
|
|
209
210
|
baseDir: cwd
|
|
210
211
|
});
|
|
211
212
|
const repoName = await gitClient.getRepoName();
|
|
212
|
-
let targets =
|
|
213
|
+
let targets = getAssetTargets(raw);
|
|
213
214
|
if (interactive) {
|
|
214
215
|
targets = await (0, import_checkbox.default)({
|
|
215
216
|
message: "\u9009\u62E9\u4F60\u9700\u8981\u7684\u6587\u4EF6",
|
|
@@ -280,15 +281,18 @@ async function main(opts) {
|
|
|
280
281
|
});
|
|
281
282
|
}
|
|
282
283
|
}
|
|
284
|
+
async function createNewProject(name2) {
|
|
285
|
+
const defaultTemplate = "bar";
|
|
286
|
+
const targetTemplate = name2 ?? defaultTemplate;
|
|
287
|
+
await import_fs_extra.default.copy(import_pathe.default.join(templatesDir, defaultTemplate), import_pathe.default.join(cwd, targetTemplate));
|
|
288
|
+
logger.success(`${targetTemplate} \u9879\u76EE\u521B\u5EFA\u6210\u529F\uFF01`);
|
|
289
|
+
}
|
|
283
290
|
|
|
284
291
|
// src/monorepo/binaryMirror.ts
|
|
285
292
|
var import_comment_json = require("comment-json");
|
|
286
293
|
var import_fs_extra2 = __toESM(require("fs-extra"), 1);
|
|
287
294
|
var import_pathe2 = __toESM(require("pathe"), 1);
|
|
288
295
|
|
|
289
|
-
// src/monorepo/mirror/utils.ts
|
|
290
|
-
var import_set_value2 = __toESM(require("set-value"), 1);
|
|
291
|
-
|
|
292
296
|
// src/monorepo/mirror/sources.ts
|
|
293
297
|
var chinaMirrorsEnvs = {
|
|
294
298
|
COREPACK_NPM_REGISTRY: "https://registry.npmmirror.com",
|
|
@@ -320,6 +324,7 @@ var chinaMirrorsEnvs = {
|
|
|
320
324
|
};
|
|
321
325
|
|
|
322
326
|
// src/monorepo/mirror/utils.ts
|
|
327
|
+
var import_set_value2 = __toESM(require("set-value"), 1);
|
|
323
328
|
function setMirror(obj) {
|
|
324
329
|
const platforms = ["linux", "windows", "osx"];
|
|
325
330
|
const prefix = "terminal.integrated.env";
|
|
@@ -489,7 +494,7 @@ async function syncNpmMirror(cwd3) {
|
|
|
489
494
|
var cwd2 = import_node_process2.default.cwd();
|
|
490
495
|
import_commander.program.name(name).version(version);
|
|
491
496
|
import_commander.program.option("-i,--interactive").option("--raw", "raw mode").option("--outDir <dir>", "Output directory").action(async (opts) => {
|
|
492
|
-
await
|
|
497
|
+
await upgradeMonorepo(opts);
|
|
493
498
|
logger.success("upgrade @icebreakers/monorepo ok!");
|
|
494
499
|
});
|
|
495
500
|
import_commander.program.command("init").action(async () => {
|
|
@@ -508,6 +513,10 @@ import_commander.program.command("mirror").action(async () => {
|
|
|
508
513
|
await setVscodeBinaryMirror(cwd2);
|
|
509
514
|
logger.success("set vscode binary mirror finished!");
|
|
510
515
|
});
|
|
516
|
+
import_commander.program.command("new").argument("[name]").action(async (targetPath) => {
|
|
517
|
+
await createNewProject(targetPath);
|
|
518
|
+
logger.success("create a package");
|
|
519
|
+
});
|
|
511
520
|
var program_default = import_commander.program;
|
|
512
521
|
|
|
513
522
|
// src/cli.ts
|
package/dist/cli.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GitClient,
|
|
3
|
+
createNewProject,
|
|
3
4
|
logger,
|
|
4
|
-
main,
|
|
5
5
|
name,
|
|
6
|
+
upgradeMonorepo,
|
|
6
7
|
version
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-UFDFNNMJ.js";
|
|
8
9
|
|
|
9
10
|
// src/program.ts
|
|
10
11
|
import process from "node:process";
|
|
@@ -15,9 +16,6 @@ import { parse, stringify } from "comment-json";
|
|
|
15
16
|
import fs from "fs-extra";
|
|
16
17
|
import path from "pathe";
|
|
17
18
|
|
|
18
|
-
// src/monorepo/mirror/utils.ts
|
|
19
|
-
import set from "set-value";
|
|
20
|
-
|
|
21
19
|
// src/monorepo/mirror/sources.ts
|
|
22
20
|
var chinaMirrorsEnvs = {
|
|
23
21
|
COREPACK_NPM_REGISTRY: "https://registry.npmmirror.com",
|
|
@@ -49,6 +47,7 @@ var chinaMirrorsEnvs = {
|
|
|
49
47
|
};
|
|
50
48
|
|
|
51
49
|
// src/monorepo/mirror/utils.ts
|
|
50
|
+
import set from "set-value";
|
|
52
51
|
function setMirror(obj) {
|
|
53
52
|
const platforms = ["linux", "windows", "osx"];
|
|
54
53
|
const prefix = "terminal.integrated.env";
|
|
@@ -218,7 +217,7 @@ async function syncNpmMirror(cwd2) {
|
|
|
218
217
|
var cwd = process.cwd();
|
|
219
218
|
program.name(name).version(version);
|
|
220
219
|
program.option("-i,--interactive").option("--raw", "raw mode").option("--outDir <dir>", "Output directory").action(async (opts) => {
|
|
221
|
-
await
|
|
220
|
+
await upgradeMonorepo(opts);
|
|
222
221
|
logger.success("upgrade @icebreakers/monorepo ok!");
|
|
223
222
|
});
|
|
224
223
|
program.command("init").action(async () => {
|
|
@@ -237,6 +236,10 @@ program.command("mirror").action(async () => {
|
|
|
237
236
|
await setVscodeBinaryMirror(cwd);
|
|
238
237
|
logger.success("set vscode binary mirror finished!");
|
|
239
238
|
});
|
|
239
|
+
program.command("new").argument("[name]").action(async (targetPath) => {
|
|
240
|
+
await createNewProject(targetPath);
|
|
241
|
+
logger.success("create a package");
|
|
242
|
+
});
|
|
240
243
|
var program_default = program;
|
|
241
244
|
|
|
242
245
|
// src/cli.ts
|
package/dist/index.cjs
CHANGED
|
@@ -6,8 +6,8 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
8
|
var __export = (target, all) => {
|
|
9
|
-
for (var
|
|
10
|
-
__defProp(target,
|
|
9
|
+
for (var name2 in all)
|
|
10
|
+
__defProp(target, name2, { get: all[name2], enumerable: true });
|
|
11
11
|
};
|
|
12
12
|
var __copyProps = (to, from, except, desc) => {
|
|
13
13
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -30,8 +30,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
-
|
|
34
|
-
setPkgJson: () => setPkgJson
|
|
33
|
+
createNewProject: () => createNewProject,
|
|
34
|
+
setPkgJson: () => setPkgJson,
|
|
35
|
+
upgradeMonorepo: () => upgradeMonorepo
|
|
35
36
|
});
|
|
36
37
|
module.exports = __toCommonJS(src_exports);
|
|
37
38
|
|
|
@@ -53,30 +54,12 @@ var import_picocolors = __toESM(require("picocolors"), 1);
|
|
|
53
54
|
var import_set_value = __toESM(require("set-value"), 1);
|
|
54
55
|
|
|
55
56
|
// package.json
|
|
56
|
-
var version = "0.6.
|
|
57
|
+
var version = "0.6.2";
|
|
57
58
|
|
|
58
59
|
// src/logger.ts
|
|
59
60
|
var import_consola = require("consola");
|
|
60
61
|
var logger = (0, import_consola.createConsola)();
|
|
61
62
|
|
|
62
|
-
// src/md5.ts
|
|
63
|
-
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
64
|
-
function getFileHash(data) {
|
|
65
|
-
const hashSum = import_node_crypto.default.createHash("md5");
|
|
66
|
-
hashSum.update(data);
|
|
67
|
-
return hashSum.digest("hex");
|
|
68
|
-
}
|
|
69
|
-
function isFileChanged(src, dest) {
|
|
70
|
-
try {
|
|
71
|
-
const currentHash = getFileHash(src);
|
|
72
|
-
const previousHash = getFileHash(dest);
|
|
73
|
-
return currentHash !== previousHash;
|
|
74
|
-
} catch (err) {
|
|
75
|
-
console.error("Error calculating file hash:", err);
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
63
|
// src/monorepo/git.ts
|
|
81
64
|
var import_get_value = __toESM(require("get-value"), 1);
|
|
82
65
|
var import_git_url_parse = __toESM(require("git-url-parse"), 1);
|
|
@@ -117,10 +100,10 @@ var GitClient = class {
|
|
|
117
100
|
}
|
|
118
101
|
async getUser() {
|
|
119
102
|
const config = await this.getConfig();
|
|
120
|
-
const
|
|
103
|
+
const name2 = (0, import_get_value.default)(config, "user.name");
|
|
121
104
|
const email = (0, import_get_value.default)(config, "user.email");
|
|
122
105
|
return {
|
|
123
|
-
name,
|
|
106
|
+
name: name2,
|
|
124
107
|
email
|
|
125
108
|
};
|
|
126
109
|
}
|
|
@@ -136,7 +119,7 @@ var scripts = {
|
|
|
136
119
|
var scriptsEntries = Object.entries(scripts);
|
|
137
120
|
|
|
138
121
|
// src/targets.ts
|
|
139
|
-
function
|
|
122
|
+
function getAssetTargets(raw) {
|
|
140
123
|
const list = [
|
|
141
124
|
".changeset",
|
|
142
125
|
".husky",
|
|
@@ -169,7 +152,25 @@ function getTargets(raw) {
|
|
|
169
152
|
return list;
|
|
170
153
|
}
|
|
171
154
|
|
|
172
|
-
// src/utils.ts
|
|
155
|
+
// src/utils/md5.ts
|
|
156
|
+
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
157
|
+
function getFileHash(data) {
|
|
158
|
+
const hashSum = import_node_crypto.default.createHash("md5");
|
|
159
|
+
hashSum.update(data);
|
|
160
|
+
return hashSum.digest("hex");
|
|
161
|
+
}
|
|
162
|
+
function isFileChanged(src, dest) {
|
|
163
|
+
try {
|
|
164
|
+
const currentHash = getFileHash(src);
|
|
165
|
+
const previousHash = getFileHash(dest);
|
|
166
|
+
return currentHash !== previousHash;
|
|
167
|
+
} catch (err) {
|
|
168
|
+
console.error("Error calculating file hash:", err);
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// src/utils/regexp.ts
|
|
173
174
|
function escapeStringRegexp(str) {
|
|
174
175
|
return str.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
175
176
|
}
|
|
@@ -187,6 +188,7 @@ var queue = new import_p_queue.default({ concurrency: 1 });
|
|
|
187
188
|
var __filename2 = (0, import_node_url.fileURLToPath)(importMetaUrl);
|
|
188
189
|
var __dirname = import_pathe.default.dirname(__filename2);
|
|
189
190
|
var assetsDir = import_pathe.default.join(__dirname, "../assets");
|
|
191
|
+
var templatesDir = import_pathe.default.join(__dirname, "../templates");
|
|
190
192
|
var cwd = import_node_process.default.cwd();
|
|
191
193
|
function setPkgJson(sourcePkgJson, targetPkgJson) {
|
|
192
194
|
const packageManager = (0, import_get_value2.default)(sourcePkgJson, "packageManager", { default: "" });
|
|
@@ -210,14 +212,14 @@ function setPkgJson(sourcePkgJson, targetPkgJson) {
|
|
|
210
212
|
function confirmOverwrite(filename) {
|
|
211
213
|
return (0, import_confirm.default)({ message: `${import_picocolors.default.greenBright(filename)} \u6587\u4EF6\u5185\u5BB9\u53D1\u751F\u6539\u53D8,\u662F\u5426\u8986\u76D6?`, default: false });
|
|
212
214
|
}
|
|
213
|
-
async function
|
|
215
|
+
async function upgradeMonorepo(opts) {
|
|
214
216
|
const { outDir = "", raw, interactive } = opts;
|
|
215
217
|
const absOutDir = import_pathe.default.isAbsolute(outDir) ? outDir : import_pathe.default.join(cwd, outDir);
|
|
216
218
|
const gitClient = new GitClient({
|
|
217
219
|
baseDir: cwd
|
|
218
220
|
});
|
|
219
221
|
const repoName = await gitClient.getRepoName();
|
|
220
|
-
let targets =
|
|
222
|
+
let targets = getAssetTargets(raw);
|
|
221
223
|
if (interactive) {
|
|
222
224
|
targets = await (0, import_checkbox.default)({
|
|
223
225
|
message: "\u9009\u62E9\u4F60\u9700\u8981\u7684\u6587\u4EF6",
|
|
@@ -288,8 +290,15 @@ async function main(opts) {
|
|
|
288
290
|
});
|
|
289
291
|
}
|
|
290
292
|
}
|
|
293
|
+
async function createNewProject(name2) {
|
|
294
|
+
const defaultTemplate = "bar";
|
|
295
|
+
const targetTemplate = name2 ?? defaultTemplate;
|
|
296
|
+
await import_fs_extra.default.copy(import_pathe.default.join(templatesDir, defaultTemplate), import_pathe.default.join(cwd, targetTemplate));
|
|
297
|
+
logger.success(`${targetTemplate} \u9879\u76EE\u521B\u5EFA\u6210\u529F\uFF01`);
|
|
298
|
+
}
|
|
291
299
|
// Annotate the CommonJS export names for ESM import in node:
|
|
292
300
|
0 && (module.exports = {
|
|
293
|
-
|
|
294
|
-
setPkgJson
|
|
301
|
+
createNewProject,
|
|
302
|
+
setPkgJson,
|
|
303
|
+
upgradeMonorepo
|
|
295
304
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -7,6 +7,7 @@ interface CliOpts {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
declare function setPkgJson(sourcePkgJson: PackageJson, targetPkgJson: PackageJson): void;
|
|
10
|
-
declare function
|
|
10
|
+
declare function upgradeMonorepo(opts: CliOpts): Promise<void>;
|
|
11
|
+
declare function createNewProject(name?: string): Promise<void>;
|
|
11
12
|
|
|
12
|
-
export {
|
|
13
|
+
export { createNewProject, setPkgJson, upgradeMonorepo };
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ interface CliOpts {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
declare function setPkgJson(sourcePkgJson: PackageJson, targetPkgJson: PackageJson): void;
|
|
10
|
-
declare function
|
|
10
|
+
declare function upgradeMonorepo(opts: CliOpts): Promise<void>;
|
|
11
|
+
declare function createNewProject(name?: string): Promise<void>;
|
|
11
12
|
|
|
12
|
-
export {
|
|
13
|
+
export { createNewProject, setPkgJson, upgradeMonorepo };
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@icebreakers/monorepo",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.2",
|
|
5
5
|
"description": "icebreaker's monorepo config generator",
|
|
6
6
|
"author": "ice breaker <1324318532@qq.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
"files": [
|
|
31
31
|
"assets",
|
|
32
32
|
"bin",
|
|
33
|
-
"dist"
|
|
33
|
+
"dist",
|
|
34
|
+
"templates"
|
|
34
35
|
],
|
|
35
36
|
"dependencies": {
|
|
36
37
|
"@inquirer/checkbox": "^4.0.0",
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@icebreakers/bar",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.1.2",
|
|
5
|
+
"description": "tsup(esbuild) build package template",
|
|
6
|
+
"author": "ice breaker <1324318532@qq.com>",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/sonofmagic/monorepo-template.git",
|
|
11
|
+
"directory": "packages/bar"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/sonofmagic/monorepo-template/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [],
|
|
17
|
+
"sideEffects": false,
|
|
18
|
+
"exports": {
|
|
19
|
+
".": "./src/index.ts"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"dev": "tsup --watch --sourcemap",
|
|
26
|
+
"build": "tsup",
|
|
27
|
+
"test": "vitest run",
|
|
28
|
+
"test:dev": "vitest",
|
|
29
|
+
"release": "pnpm publish",
|
|
30
|
+
"lint": "eslint .",
|
|
31
|
+
"lint:fix": "eslint . --fix"
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"exports": {
|
|
35
|
+
".": {
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"import": "./dist/index.js",
|
|
38
|
+
"require": "./dist/index.cjs"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"main": "./dist/index.cjs",
|
|
42
|
+
"module": "./dist/index.js",
|
|
43
|
+
"types": "./dist/index.d.ts"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function bar() {
|
|
2
|
+
return 'foo'
|
|
3
|
+
}
|
|
4
|
+
// import __cjs_url__ from 'url';
|
|
5
|
+
// import __cjs_path__ from 'path';
|
|
6
|
+
// import __cjs_mod__ from 'module';
|
|
7
|
+
// const __filename = __cjs_url__.fileURLToPath(import.meta.url);
|
|
8
|
+
// const __dirname = __cjs_path__.dirname(__filename);
|
|
9
|
+
// const require = __cjs_mod__.createRequire(import.meta.url);
|
|
10
|
+
export function getDirname() {
|
|
11
|
+
return __dirname
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export enum xx {
|
|
15
|
+
id,
|
|
16
|
+
dd,
|
|
17
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineConfig } from 'tsup'
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
entry: ['src/index.ts'], // , 'src/cli.ts'],
|
|
5
|
+
shims: true,
|
|
6
|
+
format: ['cjs', 'esm'],
|
|
7
|
+
clean: true,
|
|
8
|
+
dts: true,
|
|
9
|
+
// https://github.com/egoist/tsup/pull/1056
|
|
10
|
+
// https://github.com/egoist/tsup/issues?q=cjsInterop
|
|
11
|
+
// cjsInterop: true,
|
|
12
|
+
// splitting: true,
|
|
13
|
+
})
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import path from 'node:path'
|
|
2
|
+
import { defineProject } from 'vitest/config'
|
|
3
|
+
|
|
4
|
+
export default defineProject({
|
|
5
|
+
test: {
|
|
6
|
+
alias: [
|
|
7
|
+
{
|
|
8
|
+
find: '@',
|
|
9
|
+
replacement: path.resolve(__dirname, './src'),
|
|
10
|
+
},
|
|
11
|
+
],
|
|
12
|
+
globals: true,
|
|
13
|
+
testTimeout: 60_000,
|
|
14
|
+
},
|
|
15
|
+
})
|