voidzero-dev / voidzero-dev/vite-plus

Improve vp create completion reporting when installation or formatting fails

Abierto
#2,453 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Rust
Estrellas
5.8k
Forks
262
Merge medio
23 h 41 min
PR fusionados (30 d)
138

Descripción

## Description

When dependency installation and formatting fail during `vp create`, the command can still finish by:

- displaying the project as `Scaffolded`;
- suggesting `vp run` as the next step;
- returning exit code 0.

In the same command, the user is first shown that manual installation and formatting may still be required, but the final output and process status indicate that project creation completed successfully.

## Observed flow

```mermaid
flowchart LR
subgraph actual["Actual execution"]
A["Project files are generated"] --> B["Dependency installation fails"]
B --> C["Formatting fails"]
end

subgraph result["Final signals from the CLI"]
D["Displays: Scaffolded"]
D --> E["Suggests: Next: vp run"]
E --> F["Returns exit code 0"]
end

C -->|"But the command still continues to"| D
```

The project directory and `package.json` are generated, but dependency installation and formatting do not complete. Despite that, the final message, suggested next step, and exit code all communicate that the complete operation succeeded.

## Reproduction

On macOS or Linux, run the following commands in a temporary directory:

```bash
workdir=$(mktemp -d)
cd "$workdir"

env -u VP_SKIP_INSTALL \
VP_CLI_BIN=/usr/bin/false \
vp create vite:application \
--no-interactive \
--no-hooks \
--no-git \
--directory create-failure-demo

exit_code=$?

echo "exit code: $exit_code"
test -d create-failure-demo && echo "project directory exists"
test -f create-failure-demo/package.json && echo "package.json exists"
test -d create-failure-demo/node_modules || echo "node_modules missing"
```

`VP_CLI_BIN=/usr/bin/false` makes the installation and formatting commands started internally by `vp create` return a failure consistently.

## Actual result

The stable terminal output contains the following lines:

```text
You may need to run "vp install" manually in /create-failure-demo
You may need to run "vp fmt" manually in /create-failure-demo
◇ Scaffolded create-failure-demo with Vite application
• Node 25.9.0 pnpm 11.21.0
→ Next: cd create-failure-demo && vp run
```

The recorded filesystem and process state is:

```text
exit code: 0
project directory exists
package.json exists
node_modules missing
```

## My understanding of the behavior

This appears to combine two different states:

1. The project directory and template files were generated.
2. The complete project creation process finished successfully.

In this reproduction, the first state is true: the `create-failure-demo` directory and its `package.json` exist.

The second state is not true: dependency installation and formatting both returned failures, and `node_modules` was not created.

The final output does not distinguish between these states. Instead, it presents three strong success signals:

- `Scaffolded` indicates that project creation completed.
- `Next: vp run` indicates that the project is ready to run.
- Exit code 0 indicates that the entire command completed successfully.

Even though the manual recovery messages appear earlier, users will naturally treat the final lines as the authoritative result of the command. This is especially noticeable after a long installation log, where the final summary is usually the first place users look to understand what happened.

For scripts and CI systems, the result is even less ambiguous: they generally use the process exit code rather than interpret terminal text. An exit code of 0 records this operation as successful.

The command therefore exposes several conflicting states at the same time:

```text
Dependency installation: failed
Formatting: failed
Project directory: created
package.json: created
node_modules: missing
Final summary: successful
Suggested next step: run the project
Process exit status: successful
```

The continued existence of the generated directory is not necessarily the confusing part. The confusion comes from presenting “project files were generated” and “the complete creation process succeeded” as the same state.

## Verification environment

- macOS 27.0 on arm64
- Node.js v25.9.0
- Package manager selected by `vp create`: pnpm 11.21.0
- Confirmed with the bundled local CLI and directly against `packages/cli/src/create/bin.ts` at commit `29036b2ff12ea30f80088de4a593842df2846c3b`

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza con packages/cli/src/create/bin.ts y ejecuta la reproducción en macOS o Linux usando VP_CLI_BIN=/usr/bin/false. Rastrea cómo afectan los fallos de instalación y formateo al resumen final, al siguiente paso sugerido y al estado de salida. El trabajo estará terminado cuando el comando distinga los archivos generados de una creación completamente exitosa e informe de los fallos de forma coherente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript, vite
Área
cli
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
65/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.