Repérez les erreurs de routing.yml et services.yml Drupal avant drush cr
timaub's YAML Lint for Drupal est une extension VS Code qui vérifie que vos fichiers YAML Drupal pointent vers du code qui existe : classes de contrôleur, @services, noms de routes, permissions, bibliothèques et fichiers CSS/JS. La vérification se fait pendant que vous tapez, hors ligne, sans PHP et sans installation de Drupal.
Free : classes, méthodes, services et routes. Pro : permissions, bibliothèques, fichiers d'assets, dépendances de modules, parents de menu et export CSV.
@service non déclaré, soulignés dans le YAML et listés dans le panneau Problèmes.Écran blanc après drush cr ? C'est le plus souvent une faute de frappe dans un fichier YAML
"You have requested a non-existent service"
Un argument de service dit @entity_type.manger, ou le nom d'une classe de hook a une lettre de trop dans my_module.services.yml. Le conteneur ne se construit plus et tout le site tombe, parfois seulement en production.
Erreur de routing.yml Drupal
_controller: '\Drupal\my_module\Controller\ReportControler::build'. Rien ne se plaint jusqu'à ce que quelqu'un ouvre la page et reçoive une 500.
Route introuvable, bibliothèque introuvable
Un lien de menu pointe vers my_module.setings, une bibliothèque dépend de core/drupal.dialogg, un fichier JS a été renommé. Le YAML est valide ; ses cibles ne le sont pas.
Un schéma JSON valide la forme d'un fichier YAML. Il ne peut pas savoir si la classe, le service ou la route qu'il nomme existe. C'est ce manque que cette extension comble.
Ce qu'elle vérifie : la validation des services.yml Drupal, et plus
| Référence | Où | Édition |
|---|---|---|
| La classe PHP existe (PSR-4) | _controller, _form, _title_callback, _custom_access, class de service, factory, class de lien de menu, deriver | Free |
| La méthode existe | ::method des mêmes références (classes sans parent ni trait) | Free |
| Le service est déclaré | @id dans arguments, calls, factory, properties, configurator ; parent, decorates, alias | Free |
| La route existe | liens route_name, base_route, appears_on, info.yml configure | Free |
| Le YAML est analysable | tout fichier YAML Drupal | Free |
| La permission est déclarée | _permission de routing | Pro |
| La bibliothèque existe | dependencies de bibliothèque, libraries de thème, libraries-override, libraries-extend | Pro |
| Le fichier CSS/JS existe | chemins css et js des *.libraries.yml | Pro |
| La dépendance de module est présente | dependencies de info.yml, base theme | Pro |
| Le parent de menu ou d'onglet existe | parent de links.menu, parent_id de links.task | Pro |
Pas de bruit quand elle ne peut pas savoir. Ouvrez un seul module sur mesure et vous n'avez aucun avertissement sur @entity_type.manager ou system.admin : une vérification reste silencieuse quand le module ou le core qu'elle vise n'est pas dans l'espace de travail, et quand les routes, les services ou les permissions sont construits dynamiquement. Pas de Twig et pas de résolution de l'héritage PHP dans cette version.
Free ou Pro
| Fonction | Free | Pro |
|---|---|---|
| Classes, méthodes, services, routes, erreurs d'analyse | Oui | Oui |
| Vue du rapport, analyse de l'espace de travail, multi-racine | Oui | Oui |
| Permissions | Non | Oui |
| Bibliothèques et fichiers CSS/JS | Non | Oui |
| Dépendances de modules et thème de base | Non | Oui |
| Parents des liens de menu et des onglets locaux | Non | Oui |
| Export CSV du rapport | Non | Oui |
Confidentialité
timaub's YAML Lint for Drupal ne collecte aucune donnée, n'écrit jamais dans vos fichiers et n'exécute jamais PHP ni Drush. Sa seule requête réseau est la vérification de la licence Pro auprès de Polar ; sans clé, il n'y en a aucune. Lire la politique de confidentialité.
FAQ
Faut-il PHP, Drush ou un site Drupal qui tourne ?
Non. L'extension lit vos fichiers YAML et PHP comme du texte et résout les classes par leur chemin PSR-4. Elle fonctionne sur un portable qui n'a que VS Code.
Fonctionne-t-elle hors ligne ?
Oui. L'analyse est locale. Une clé Pro est vérifiée en ligne quand vous la saisissez, puis elle continue de fonctionner hors ligne pendant 14 jours après la dernière vérification réussie.
Elle signale un service ou une route que mon module construit en PHP.
Ajoutez le nom exact à drupalYamlLint.knownServices ou knownRoutes, ou désactivez la règle. Les modules qui ont route_callbacks, un route subscriber ou un ServiceProvider sont détectés et laissés tranquilles.
Remplace-t-elle les schémas YAML de Drupal ?
Non, elle les complète. Les schémas vérifient que les clés et les types sont valides ; cette extension vérifie que les cibles existent. Utilisez les deux.
Est-ce un projet Drupal officiel ?
Non. C'est un outil indépendant, sans affiliation avec la Drupal Association ni approbation de sa part. Drupal est une marque déposée de Dries Buytaert.
Essayez-la sur votre prochain module
Installez l'édition Free, ouvrez votre module et regardez le panneau Problèmes.