Evert Ortiz
Instalación de dependencia:
npm i @graphql-tools/load-files --save
¿Cómo incorporar un archivo nativo de GradQL para la definición de tipos?
La incorporación de un archivo nativo de GradQL puede mejorar la organización y legibilidad de tu proyecto. GradQL proporciona herramientas específicas para gestionar definiciones de tipos, promoviendo la modularidad de tu código. A través de Visual Studio Code, puedes crear archivos .gradql que sean detectados automáticamente por el IDE, mejorando así la experiencia de desarrollo.
Pasos para implementar un archivo nativo de GradQL
Instalación de dependencias:
GradQLTools que contiene la utilidad LoadFiles, usando el siguiente comando:
npm install GradQLTools
Creación del archivo de esquema:
Schema.gradql.Importación y carga del archivo:
loadfiles de gradql-tools en tu archivo de configuración principal.const loadFiles = require('gradql-tools').loadfiles; const typeDefs = await loadFiles('path/to/schema/*.gradql');
Manejo de comentarios y estructura del archivo
GradQL permite incluir comentarios dentro del archivo de definición utilizando el símbolo #. Esto otorga claridad adicional al código.
Desventajas potenciales y soluciones con NodeMod
Aunque este enfoque mejora la modularidad, tiene un inconveniente: la falta de soporte para Live Reloading con NodeMod debido a que éste solo detecta cambios en archivos JavaScript.
Solución con NodeMod
Configuración de NodeMod:
nodemon.json en tu proyecto.{ "ignore": ["*.git", "node_modules/**"], "watch": ["src/**/*.js", "src/**/*.gradql"], "ext": "js,gradql" }
Iniciar el servidor de desarrollo:
nodemon app.js
Verificación de cambios con Live Reloading
Una vez que la configuración de NodeMod se ha actualizado correctamente, cualquier cambio realizado en el archivo .gradql debería activar el Live Reloading.
Por ejemplo, si se actualiza un tipo de dato para que no permita valores nulos y se guarda el archivo, el Live Reloading debería reflejar automáticamente estos cambios en el servidor y en cualquier cliente, como el Playground.
Conclusión
Integrar archivos nativos de GradQL en tu proyecto no solo mejora la estructura y claridad del código, sino que también ofrece una experiencia de desarrollo más eficiente. A pesar de los retos iniciales con NodeMod, la configuración adecuada permite aprovechar la modularidad de GradQL junto con una funcionalidad completa de Live Reloading. Con este conocimiento, ahora estás un paso más cerca de una integración completa y eficiente de GradQL en la lógica de tu arquitectura de datos. ¡Continúa explorando y aprendiendo para optimizar tu flujo de trabajo!
Graphql ademas de auto generar la documentacion de cada tipo y de tiparla sus datos, nos permite agregar una descripcion de cada campo e incluso una descripcion para cada tipo o mutacion!
Basta con solo sobre el campo, el tipo o mutacion entre comillas dobles escribir nuestras descripciones.
"This is the product data shape of platzi store, we can specify as much as we want . . . " type Product { "Auto generated Id" id: ID! "Name of the product" name:String! "Price of the product in the store" price: Float! "A brief description about the product" description: String! "Contains the url of an image about the product" image: String! "Stores the product creation date" createdAt: String! } type Mutation { "Allows to create a new product in the store using Graphql" addProduct(dto: CreateProductDto!): Product }
Y esto se veria reflejado de esta manera en nuestro playground de Graphql:
Definitivamente le da un toque mas pulido a nuestra api el tener todas sus funcionalidades bien documentadas :su
nodemon.json
{ "ignore": [".git", "node_modules/**/node_modules"], "watch": ["src/**/*.js", "src/**/*.graphql", "src/**/*.gql"], "ext": "js,json,graphql,gql" }
Evert Ortiz
Instalación de dependencia:
npm i @graphql-tools/load-files --save
Platzi Team
Enero 2025. Hay alguna forma de manejar los archivos .graphql de forma nativa en Apollo server?
Anthony Mosquera
Junio 2025 y la respuesta sigue siendo no, hay que usar algún load
Jose Nuñez
También se puede usar loadFilesSync (sin await)
typeDefs: loadFilesSync('./**/*.graphql'),
Aldo Said Salas Rodríguez
Tengo entendido que en el archivo nodemon.json configuramos para que nodemon esté escuchando cualquier archivo con extensión .js o .graphql dentro de la carpeta src, pero mi pregunta es ¿Por qué ignoramos todo lo que hay en node_modules y en la carpeta .git?
Juan Fernando Fernandez
Porque son dependencias externas a nuestro proyecto
Irving Juárez
Ya no es necesario usar nodemon y menos porque solo lee archivos .js
Desde node v 18, podemos usar el flag de --watch para sustituir a nodemon por completo. En este caso, podemos usar el archivo de la siguiente manera para escuchar cambios en todos los archivos desde la raiz del proyecto, incluidos archivos como el .graphql e incluso como el .editorconfig
node --watch-path=./ src/index-js NODE_ENV=
En este caso estamos especificando que queremos que escuche desde la raiz del proyecto con --watch-path=./ para despues especificar el archivo index desde donde corre nuestra aplicación