create-icebreaker 0.1.16 → 1.0.0
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 +20 -3
- package/dist/index.mjs +18 -13
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -14,12 +14,29 @@ By default this:
|
|
|
14
14
|
- asks which templates to keep (default keeps none)
|
|
15
15
|
- updates the root `package.json` name
|
|
16
16
|
|
|
17
|
+
## Next Steps
|
|
18
|
+
|
|
19
|
+
After scaffolding finishes:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
cd <your-project>
|
|
23
|
+
pnpm install
|
|
24
|
+
pnpm setup
|
|
25
|
+
pnpm new my-package
|
|
26
|
+
pnpm check
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Recommended maintenance flow inside the generated workspace:
|
|
30
|
+
|
|
31
|
+
- `pnpm setup`: bootstrap recommended workspace metadata and tooling
|
|
32
|
+
- `pnpm new`: create the next package or app through the guided flow
|
|
33
|
+
- `pnpm check`: run recommended local verification
|
|
34
|
+
- `pnpm dlx repo@latest clean --yes`: optional zero-install cleanup on a fresh clone
|
|
35
|
+
|
|
17
36
|
## Templates
|
|
18
37
|
|
|
19
38
|
Available template keys:
|
|
20
39
|
|
|
21
|
-
- `unbuild`
|
|
22
|
-
- `tsup`
|
|
23
40
|
- `tsdown`
|
|
24
41
|
- `vue-lib`
|
|
25
42
|
- `vue-hono`
|
|
@@ -29,5 +46,5 @@ Available template keys:
|
|
|
29
46
|
|
|
30
47
|
## Flags
|
|
31
48
|
|
|
32
|
-
- `--templates <list>`: comma-separated template keys or indexes to keep (e.g. `
|
|
49
|
+
- `--templates <list>`: comma-separated template keys or indexes to keep (e.g. `tsdown,vue-hono` or `1,4`)
|
|
33
50
|
- `--force`: overwrite a non-empty target directory
|
package/dist/index.mjs
CHANGED
|
@@ -5,6 +5,20 @@ import fs from "node:fs/promises";
|
|
|
5
5
|
//#region src/constants.ts
|
|
6
6
|
const DEFAULT_TARGET = "icebreaker-monorepo";
|
|
7
7
|
//#endregion
|
|
8
|
+
//#region src/next-steps.ts
|
|
9
|
+
function formatNextSteps(targetDir) {
|
|
10
|
+
return [
|
|
11
|
+
"",
|
|
12
|
+
"All set! Next steps:",
|
|
13
|
+
` cd ${path.relative(process.cwd(), targetDir) || "."}`,
|
|
14
|
+
" pnpm install",
|
|
15
|
+
" pnpm setup",
|
|
16
|
+
" pnpm new my-package",
|
|
17
|
+
" pnpm check",
|
|
18
|
+
""
|
|
19
|
+
].join("\n");
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
8
22
|
//#region src/package-json.ts
|
|
9
23
|
async function updateRootPackageJson(targetDir, projectName) {
|
|
10
24
|
const pkgPath = path.join(targetDir, "package.json");
|
|
@@ -12,10 +26,9 @@ async function updateRootPackageJson(targetDir, projectName) {
|
|
|
12
26
|
const pkg = JSON.parse(raw);
|
|
13
27
|
pkg.name = projectName;
|
|
14
28
|
const devDependencies = pkg.devDependencies;
|
|
15
|
-
if (devDependencies && devDependencies["@icebreakers/monorepo"])
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
29
|
+
if (devDependencies && devDependencies["@icebreakers/monorepo"]) delete devDependencies["@icebreakers/monorepo"];
|
|
30
|
+
if (devDependencies && devDependencies["repoctl"]) delete devDependencies["repoctl"];
|
|
31
|
+
if (devDependencies && Object.keys(devDependencies).length === 0) delete pkg.devDependencies;
|
|
19
32
|
const scripts = pkg.scripts;
|
|
20
33
|
if (scripts) {
|
|
21
34
|
const nextScripts = {};
|
|
@@ -90,15 +103,7 @@ async function scaffoldFromNpm(targetDir, selectedTemplates, force = false) {
|
|
|
90
103
|
//#endregion
|
|
91
104
|
//#region src/index.ts
|
|
92
105
|
function printNextSteps(targetDir) {
|
|
93
|
-
|
|
94
|
-
process.stdout.write([
|
|
95
|
-
"",
|
|
96
|
-
"All set! Next steps:",
|
|
97
|
-
` cd ${relative}`,
|
|
98
|
-
" pnpm install",
|
|
99
|
-
" pnpm dev",
|
|
100
|
-
""
|
|
101
|
-
].join("\n"));
|
|
106
|
+
process.stdout.write(formatNextSteps(targetDir));
|
|
102
107
|
}
|
|
103
108
|
async function runCreate(targetDirInput, options) {
|
|
104
109
|
const isInteractive = Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-icebreaker",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "1.0.0",
|
|
5
5
|
"description": "Bootstrap the icebreaker monorepo template via npm create/pnpm create with optional cleanup",
|
|
6
6
|
"author": "ice breaker <hi@sonofmagic.top>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"node": ">=18.0.0"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@icebreakers/monorepo-templates": "0.
|
|
34
|
+
"@icebreakers/monorepo-templates": "1.0.0"
|
|
35
35
|
},
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public"
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"scripts": {
|
|
40
40
|
"dev": "tsdown --watch --sourcemap",
|
|
41
41
|
"build": "tsdown",
|
|
42
|
-
"typecheck": "tsc -p tsconfig.json",
|
|
42
|
+
"typecheck": "pnpm --filter @icebreakers/monorepo-templates build && node ../../node_modules/typescript/bin/tsc -p tsconfig.json",
|
|
43
43
|
"lint": "eslint .",
|
|
44
44
|
"test": "vitest run --passWithNoTests"
|
|
45
45
|
}
|