diff --git a/.changeset/warm-forks-live.md b/.changeset/warm-forks-live.md new file mode 100644 index 0000000..dc027d4 --- /dev/null +++ b/.changeset/warm-forks-live.md @@ -0,0 +1,5 @@ +--- +'@tanstack/cli': minor +--- + +fix:spinner not rendering properly during deps installation diff --git a/packages/cli/src/commands/create.ts b/packages/cli/src/commands/create.ts index 854744e..90aa7ee 100644 --- a/packages/cli/src/commands/create.ts +++ b/packages/cli/src/commands/create.ts @@ -420,10 +420,22 @@ export async function runCreate( }, 1000) try { - const { execSync } = await import('node:child_process') - const installCmd = - packageManager === 'yarn' ? 'yarn' : `${packageManager} install` - execSync(installCmd, { cwd: targetDir, stdio: 'ignore' }) + const { spawn } = await import('node:child_process') + const installCmd = packageManager === 'yarn' ? 'yarn' : packageManager + const args = packageManager === 'yarn' ? [] : ['install'] + await new Promise((resolve, reject) => { + const child = spawn(installCmd, args, { + cwd: targetDir, + stdio: 'ignore', + shell: true, + }) + child.on('close', (code) => { + if (code === 0) resolve() + else reject(new Error(`Process exited with code ${code}`)) + }) + child.on('error', reject) + }) + clearInterval(interval) const total = Math.floor((Date.now() - startTime) / 1000) s.stop(`Dependencies installed (${total}s)`)