Package.json script tasks don't expose npm lifecycle env; cache-enabled tasks strip host-stamped values
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 65/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- nodejs, rust
- Domaine
- build-system, tooling
Piste de recherche
Commencez dans vt_plan à plan_spawn_execution et examinez EnvFingerprints::resolve, DEFAULT_UNTRACKED_ENV et l’insertion existante de MARKER_ENV_NAME. Lisez ensuite le fixture end-to-end de vp_run_env de bout en bout, y compris son cas mis en cache. C’est terminé lorsque les tâches de package.json conservent l’environnement pertinent du cycle de vie de npm, y compris les tâches avec cache activé, avec une couverture du comportement signalé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
When vite-task spawns a package.json script, the child gets none of the npm lifecycle environment variables (npm_execpath, npm_config_user_agent, npm_lifecycle_event, npm_node_execpath, …) that npm, pnpm, and Yarn all set when they run scripts. Tools that detect their invoking package manager from that env — npm-run-all2/run-p being the common one — silently fall back to npm, which then fails devEngines.packageManager enforcement in pnpm projects.
Downstream report: voidzero-dev/vite-plus#2317 (vpr check → run-p → npm → EBADDEVENGINES). Reproduced there with a minimal project: pnpm run check sets npm_execpath=<pnpm>/bin/pnpm.mjs, npm_config_user_agent=pnpm/11.20.0 …, npm_lifecycle_event=probe for the child; the same script through the task runner gets none of them.
Why a vite-plus-side fix can't fully cover it
voidzero-dev/vite-plus#2385 stamps npm_execpath / npm_config_user_agent / npm_node_execpath / INIT_CWD into the process env before Session::init snapshots it. That works for plain scripts (which default to cache: scripts: false), but two pieces need the planner:
- Cache-enabled tasks strip the stamped vars again.
plan_spawn_executionrunsEnvFingerprints::resolve(&mut spawn_envs, &cache_config.env_config)before spawning, andDEFAULT_UNTRACKED_ENVcontains no lowercasenpm_*name (matching is case-sensitive on Unix). So forcache: { scripts: true }or config-defined tasks (cached by default), the session-level stamp is filtered out and the npm fallback returns — only in the cached case, which no fixture currently exercises. TheVP_RUNmarker had this exact problem and is re-inserted after the filter, with a comment explaining why. npm_lifecycle_event/npm_lifecycle_scriptare per-task values (script name / script body). Only the planner knows them; a session-level stamp can't provide them. pnpm sets both for every script it runs.
Suggested direction
- Re-insert the lifecycle names post-filter next to the existing
MARKER_ENV_NAMEinsert invt_plan(or add them toDEFAULT_UNTRACKED_ENV), so host-provided lifecycle env survives cache-enabled tasks. - Optionally set
npm_lifecycle_event(andnpm_lifecycle_script) from the task itself when spawning package.json scripts, which vite-plus cannot do from outside.
Happy to send a PR for either or both if the direction sounds right — the vp_run_env e2e fixture looks like the natural place for coverage (its cached case already demonstrates the marker surviving the env filter).
- Langage dominant
- Rust
- Étoiles
- 473
- Forks
- 44
- Merge moyen
- 1 j 7 min
- PR mergées (30 j)
- 56
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de voidzero-dev/vite-task
-
Windows: automatic filesystem tracking makes Git/MSYS sh.exe fail with MapViewOfFileEx error 487Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 18/100
voidzero-dev/vite-task#830 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
voidzero-dev/vite-task#822 ·
Les mainteneurs répondent en général sous 1 jour
-
Let tools mark cache directories with CACHEDIR.TAGPeut-être pris @lifeiscontent l’a pris il y a 8 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
voidzero-dev/vite-task#793 ·
Les mainteneurs répondent en général sous 1 jour
-
Preview cache hits without running tasksPeut-être pris @lifeiscontent l’a pris il y a 9 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
voidzero-dev/vite-task#791 ·
Les mainteneurs répondent en général sous 1 jour
-
Built-in tool tasks miss the cache after the workspace movesPeut-être pris @lifeiscontent l’a pris il y a 9 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 67/100
voidzero-dev/vite-task#790 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de voidzero-dev/vite-task
Issues similaires
-
[Bug]: Web chat input doesn't regain focus after a reply finishesPeut-être pris @GaijinSystems l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
zeroclaw-labs/zeroclaw#11658 ·
Les mainteneurs répondent en général sous 2 jours
-
good first issue help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
bytecodealliance/wasm-tools#2768 ·
Les mainteneurs répondent en général sous 1 jour
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
NuSkooler/enigma-bbs#907 ·
Les mainteneurs répondent en général sous 1 jour