PowerShell `vp` wrapper hides failures: `$?` is `True` and `&&` keeps going after `vp` fails

Fechada Para iniciantes
#2,934 2 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 1 dia

@fengmk2 já está trabalhando nisso.

Desde 8/10/2026.

  • #2947 de @fengmk2 — integrado

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
72/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
powershell, rust, typescript
Domínio
cli

Direção de pesquisa

Comece lendo a função vp em env.ps1 e compare o comportamento de status dela no PowerShell com a execução direta de vp.exe. Reproduza a falha com um comando que faça vp pack falhar e, em seguida, verifique $LASTEXITCODE, $? e uma cadeia &&. O trabalho estará concluído quando o wrapper reportar a falha por meio de $? e impedir que a cadeia continue.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug pending triage
Describe the bug

In PowerShell, the vp function defined in env.ps1 loses the exit status of the vp.exe binary. When a command fails, $LASTEXITCODE is set correctly, but $? is True.

Reproduction

see below

Steps to reproduce

example vite.config.ts:

export default defineConfig({
  pack: {
    entry: 'src/does-not-exist.js'
  },
});

In powershell:

> vp pack
VITE+ - The Unified Toolchain for the Web

ℹ entry: src/does-not-exist.js
...
error: Build failed with 1 error:

[UNRESOLVED_ENTRY] Cannot resolve entry module src/fail.js.

    at ...

> "$LastExitCode $?"
1 True

vp pack returns with exit code 1 (good), and with status True (bad).

running vp.exe directly does not have this issue:

> vp.exe pack           
VITE+ - The Unified Toolchain for the Web

ℹ entry: src/does-not-exist.js
...
error: Build failed with 1 error:

[UNRESOLVED_ENTRY] Cannot resolve entry module src/fail.js.

    at ...

> "$LastExitCode $?"    
1 False

with vp.exe, $? correctly outputs False, which correctly breaks && chains for example

System Info
> vp env current
VITE+ - The Unified Toolchain for the Web

Node.js:
  Version    26.11.0
  Source     devEngines.runtime
  Bin Path   C:\Users\me\AppData\Local\vite-plus\data\js_runtime\node\26.11.0\node.exe
  Installed  true
  Mode       managed

Package Manager:
  Name       npm
  Version    12.2.0
  Source     devEngines.packageManager
  Bin Paths  
    npm      C:\Users\me\AppData\Local\vite-plus\data\package_manager\npm\12.2.0\npm\bin\npm.cmd
    npx      C:\Users\me\AppData\Local\vite-plus\data\package_manager\npm\12.2.0\npm\bin\npx.cmd
  Installed  true
  Mode       managed

> vp --version  
VITE+ - The Unified Toolchain for the Web

vp v1.1.0

Local vite-plus:
  vite-plus  v1.1.0

Tools:
  vite             v8.3.3
  rolldown         v1.2.12
  vitest           v5.0.3
  oxfmt            v0.72.0
  oxlint           v1.87.0
  oxlint-tsgolint  v7.0.2003
  tsdown           v0.23.0

Environment:
  Package manager  npm ^12.2.0
  Node.js          v26.11.0 (devEngines.runtime)
Used Package Manager

npm

Logs

Validations
Linguagem predominante
Rust
Estrelas
6.5k
Forks
297
Merge médio
20h 18min
PRs com merge (30d)
236

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de voidzero-dev/vite-plus

Todas as issues de voidzero-dev/vite-plus

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.