À propos du projet
GraphQL.js est l'implémentation de référence en JavaScript de GraphQL, le langage de requête pour API créé à l'origine chez Facebook. Le fichier README renvoie vers le dépôt de la spécification GraphQL pour un aperçu général du langage, et note que les exemples décrits s'y trouvent sous forme de tests dans ce dépôt — un parcours suggéré pour les nouveaux venus est de lire cet aperçu parallèlement aux tests correspondants.
Capacités principales
La bibliothèque expose deux capacités centrales : la construction d'un schéma de types et le service de requêtes basées sur ce schéma. Un schéma est défini avec GraphQLSchema et GraphQLObjectType, avec des champs dont le type est l'un des scalaires intégrés tels que GraphQLString ; chaque champ peut fournir une fonction resolve. Le README précise qu'un résolveur peut retourner une valeur, une promesse ou un tableau de promesses. Les requêtes sont exécutées via la fonction graphql, qui accepte un schéma et une chaîne de caractères source et retourne une promesse du résultat. Avant l'exécution, la fonction vérifie que la requête est syntaxiquement et sémantiquement valide et signale sinon des erreurs, illustrées par un exemple qui retourne une erreur "Cannot query field" avec des informations de localisation.
Installation
GraphQL.js s'installe depuis npm via le package `graphql`, en utilisant npm, yarn ou bun. Le README mentionne également une branche `npm` du dépôt maintenue automatiquement qui suit le dernier commit de la ligne 17.x.x ayant réussi tous les tests ; dépendre directement de cette branche est proposé comme moyen d'utiliser du code non encore publié, tandis que le README recommande d'utiliser les builds npm publiés.
Utilisation dans le navigateur et avec des bundlers
Le README note que la bibliothèque est polyvalente et peut être utilisée aussi bien dans un serveur Node que dans le navigateur, citant GraphiQL comme exemple de projet construit avec elle. Les projets utilisant webpack ou rollup devraient fonctionner sans configuration spéciale et n'inclure que les parties de la bibliothèque qu'ils utilisent, car GraphQL.js est distribué avec des fichiers CommonJS (`require()`) et ESModule (`import`). Une carte `exports` dans le `package.json` dirige les environnements d'exécution et les bundlers vers les fichiers appropriés ; les outils sans support `exports` trouvent les builds CommonJS dans les fichiers `.js` et le build ESModule dans les fichiers `.mjs`.
Gouvernance du projet et support
Les contributions sont bienvenues via des pull requests, et le dépôt est géré par EasyCLA : les participants doivent signer un accord d'adhésion à la spécification GraphQL, soit individuellement, soit via un employeur, avant de contribuer. Le README mentionne également l'adhésion à la GraphQL Foundation comme moyen de soutenir financièrement la communauté.
Les changements sont suivis via les releases GitHub. Le projet est sous licence MIT. Il suit le versionnage sémantique (Semantic Versioning), avec un support complet (corrections de bugs et mises à jour de sécurité) pour la dernière version majeure, un support des fonctionnalités pour la version majeure précédente pendant 12 mois après une nouvelle version majeure (le backporting des changements de spécification n'étant effectué que s'ils ne sont pas disruptifs), et aucune maintenance active pour les versions plus anciennes — sauf si une version publiée il y a moins d'un an est traitée comme la version majeure précédente. Il n'y a actuellement aucune version Long-Term Support ; les utilisateurs sont encouragés à passer à la dernière version stable. Les dates de fin de vie d'une version majeure sont annoncées au moins six mois à l'avance, après quoi cette version ne reçoit plus de mises à jour, même pour les problèmes de sécurité critiques. Les mises à jour de sécurité critiques s'appliquent à la fois à la version majeure actuelle et à la précédente. Une aide à la mise à niveau est proposée via des notes de version par version, des guides de migration sur le site de documentation et un canal Discord communautaire.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.