prettier / prettier/plugin-php
composer.json discovery fails in VS Code remote
Personne n'a encore pris cette issue.
- Langage dominant
- PHP
- Étoiles
- 1.9k
- Forks
- 139
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
In my (admittedly specific) use case the plugin is unable to find composer.json, which is plainly present in the root of the workspace.
Environment
Running VS Code with a devcontainer in Rancher Desktop. Prettier plugin is running inside the container.
prettier and @prettier/plugin-php are installed locally inside node_modules and the VS Code plugin uses the local installation.
Settings:
"phpVersion": "composer"
Filesystem layout:
- /workspaces/myproject/
- composer.json
- .prettierrc
- node_modules/
- src/
- a.php
Result
When run on src/a.php through VS Code, the plugin fails.
["ERROR" - 9:22:26 AM] Error formatting document.
["ERROR" - 9:22:26 AM] Could not determine PHP version from composer; Could not find composer.json
Error: Could not determine PHP version from composer; Could not find composer.json
at resolvePhpVersion (file:///workspaces/myproject/node_modules/@prettier/plugin-php/src/options.mjs:95:13)
at Object.parse (file:///workspaces/myproject/node_modules/@prettier/plugin-php/src/parser.mjs:11:3)
at parse5 (file:///workspaces/myproject/node_modules/prettier/index.mjs:16731:24)
at async coreFormat (file:///workspaces/myproject/node_modules/prettier/index.mjs:17287:25)
at async formatWithCursor (file:///workspaces/myproject/node_modules/prettier/index.mjs:17504:14)
at async Module.format2 (file:///workspaces/myproject/node_modules/prettier/index.mjs:19051:25)
When doing the same thing through the CLI, not the VS Code plugin, everything works as expected.
Cause
A little bit of digging turns up the root cause here: https://github.com/prettier/plugin-php/blob/0c883a49850281077218007322f6149f853b2015/src/options.mjs#L23
In my environment, prettier is run in this directory: /vscode/vscode-server/bin/linux-x64/360a4e4fd251bfce169a4ddf857c7d25d1ad40da
The recursive search for composer.json upwards from process.cwd() fails.
I don't feel qualified to suggest a solution but maybe search from the target file's location upwards, instead of the process' working dir?
Guide de contribution
Ouvrir 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.
Piste de recherche
Commencez par src/options.mjs, au niveau de la recherche de composer.json mentionnée dans l’issue, puis suivez la manière dont src/parser.mjs transmet le contexte du fichier PHP. Reproduisez la différence entre l’environnement distant de la CLI et celui de VS Code, et vérifiez que le formatage de src/a.php puisse trouver le composer.json à la racine du workspace tout en préservant le comportement existant de la CLI.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- php, vscode
- Domaine
- tooling
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 52/100