create-saas-starter-workspace 0.1.2 → 0.1.3
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/bin/index.mjs +15 -8
- package/package.json +1 -1
package/bin/index.mjs
CHANGED
|
@@ -28,6 +28,7 @@ const HELP = `create-saas-starter-workspace v${pkg.version}
|
|
|
28
28
|
--agent <claude|codex|opencode> 사용할 코딩 에이전트 기록 (기본: claude)
|
|
29
29
|
--skip-install 의존성 설치 생략
|
|
30
30
|
--no-doctor 생성 후 doctor 점검 생략
|
|
31
|
+
--no-summary 마무리 안내 생략 (setup 스크립트가 호출할 때 사용)
|
|
31
32
|
-v, --version 버전 출력
|
|
32
33
|
-h, --help 이 도움말
|
|
33
34
|
|
|
@@ -42,7 +43,7 @@ function fail(message) {
|
|
|
42
43
|
// ---------- 인자 파싱 ----------
|
|
43
44
|
|
|
44
45
|
function parseArgs(argv) {
|
|
45
|
-
const opts = { name: null, agent: "claude", skipInstall: false, noDoctor: false };
|
|
46
|
+
const opts = { name: null, agent: "claude", skipInstall: false, noDoctor: false, noSummary: false };
|
|
46
47
|
const positionals = [];
|
|
47
48
|
for (let i = 0; i < argv.length; i++) {
|
|
48
49
|
const arg = argv[i];
|
|
@@ -56,6 +57,9 @@ function parseArgs(argv) {
|
|
|
56
57
|
opts.skipInstall = true;
|
|
57
58
|
} else if (arg === "--no-doctor") {
|
|
58
59
|
opts.noDoctor = true;
|
|
60
|
+
} else if (arg === "--no-summary") {
|
|
61
|
+
// 부트스트랩(setup)이 호출할 때 쓴다 — 마무리 멘트는 흐름의 주인이 한 번만 한다.
|
|
62
|
+
opts.noSummary = true;
|
|
59
63
|
} else if (arg === "--agent") {
|
|
60
64
|
const value = argv[++i];
|
|
61
65
|
if (value === undefined || value.startsWith("-")) {
|
|
@@ -159,7 +163,7 @@ async function main() {
|
|
|
159
163
|
} else if (!runStepSilent("pnpm", ["--version"])) {
|
|
160
164
|
installFailed = ["web", "mobile"];
|
|
161
165
|
console.log("\n▸ [2/3] 의존성 설치 — pnpm이 없어 건너뜁니다.");
|
|
162
|
-
console.log(" → npm install -g pnpm@10 후, 아래
|
|
166
|
+
console.log(" → npm install -g pnpm@10 후, 아래 안내의 설치 명령을 실행하세요.");
|
|
163
167
|
} else {
|
|
164
168
|
for (const sub of ["web", "mobile"]) {
|
|
165
169
|
console.log(`\n▸ [2/3] 의존성 설치: ${sub}/ (몇 분 걸릴 수 있습니다)`);
|
|
@@ -179,17 +183,20 @@ async function main() {
|
|
|
179
183
|
spawnSync(process.execPath, [path.join(dest, "scripts", "doctor.mjs")], { cwd: dest, stdio: "inherit" });
|
|
180
184
|
}
|
|
181
185
|
|
|
182
|
-
|
|
183
|
-
console.log(`🎉 "${name}" 워크스페이스가 만들어졌습니다.`);
|
|
186
|
+
// 실패 안내는 모드와 무관하게 항상 출력한다 — 축하·다음 단계만 호출자(setup)에게 양보한다.
|
|
184
187
|
if (installFailed.length > 0) {
|
|
185
188
|
console.log(`\n⚠ 의존성 설치가 끝나지 않았습니다 (${installFailed.join(", ")}). 이렇게 마무리하세요:`);
|
|
186
189
|
for (const sub of installFailed) console.log(` cd ${name}/${sub} && pnpm install --frozen-lockfile`);
|
|
187
190
|
console.log(` 그다음 cd ${name} && pnpm run doctor 로 다시 확인합니다.`);
|
|
188
191
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
192
|
+
if (!opts.noSummary) {
|
|
193
|
+
console.log("─".repeat(60));
|
|
194
|
+
console.log(`🎉 "${name}" 워크스페이스가 만들어졌습니다.`);
|
|
195
|
+
console.log(`\n다음 단계:`);
|
|
196
|
+
console.log(` 1. cd ${name}`);
|
|
197
|
+
console.log(` 2. 코딩 에이전트 실행: ${opts.agent === "claude" ? "claude" : opts.agent} (첫 실행 시 로그인 안내가 나옵니다)`);
|
|
198
|
+
console.log(` 3. 자세한 길잡이는 ${name}/START-HERE.md`);
|
|
199
|
+
}
|
|
193
200
|
console.log("");
|
|
194
201
|
}
|
|
195
202
|
|
package/package.json
CHANGED