Orientação gerada a partir de informações públicas. Apenas para referência.
gql_build é um pacote de geração de código para GraphQL que fornece construtores para processar SDL do GraphQL (Linguagem de Definição de Esquema) e documentos. Ele aproveita as capacidades do gql_code_builder e do sistema de build para gerar código Dart a partir de esquemas e consultas GraphQL, permitindo interações seguras por tipo com APIs GraphQL. Projetado para desenvolvedores que usam GraphQL em aplicativos Flutter ou Dart, ele simplifica a gestão de esquemas e consultas automatizando a geração de código. O pacote suporta múltiplas plataformas, incluindo Android, iOS, macOS, Windows e Linux.
Casos de uso
Gerando clientes GraphQL com segurança de tipo
Automatizando a geração de código de esquema e consulta
Integrando o GraphQL em aplicativos Flutter
Simplificando a evolução do esquema
Habilitar a validação em tempo de compilação de consultas GraphQL
Apoiar projetos GraphQL em grande escala
Principais recursos
Gera classes Dart a partir do SDL do GraphQL
Suporte à geração de código para consultas, mutações e assinaturas
Construído sobre o sistema de compilação para integração perfeita
Fornece tipagem forte para operações do GraphQL
Oferece extensibilidade por meio de construtores personalizados
Garante compatibilidade entre múltiplas plataformas
Indicado para
Desenvolvedores Flutter usando GraphQL
Equipes gerenciando esquemas GraphQL complexos
Projetos que exigem segurança de tipo no uso do GraphQL
Desenvolvedores procurando fluxos de trabalho de geração automática de código
Aplicações que precisam de integração robusta com cliente GraphQL
Considerações
Requer conhecimento sobre o sistema de compilação
Pode aumentar os tempos de compilação com esquemas grandes
Depende da configuração correta do build_runner
Necessita de configuração adequada no pubspec.yaml
Limitado ao uso com esquemas e documentos do GraphQL
Não adequado para análise de GraphQL em tempo de execução
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
gql-dart/gql
This is an effort to advance the Dart GraphQL ecosystem.
It consists of multiple packages and libraries centered around GraphQL AST.
Core
The core of this project is the GraphQL parser which parses GraphQL strings into an AST. The parsed AST can then be transformed, visited and printed back to GraphQL string.
To enable development of GraphQL clients, we provide type definitions used to execute GraphQL operations. They include AST-based operation, request with per operation context, and response. These types are used by the Links.
Link is the current client implementation. Link is GraphQL AST-aware request/response middleware. They can be used to build a pipeline to deduplicate requests, conditionally transform requests and responses (including the context), and eventually send the requests to the server.
The goal of this project is to expand Dart GraphQL ecosystem
and to build a community around this vendor-neutral implementation.
Community contributions are welcome.
Release Process
This repository uses Melos to manage the monorepo and handle releases. The release process is partially automated through GitHub Actions.
Repository Structure
The repository is organized into several package categories:
Core packages:
gql: Core GraphQL package
gql_tristate_value
gql_code_builder_serializers
gql_code_builder
Execution packages:
gql_exec
gql_link
Link implementations:
gql_http_link
gql_dio_link
gql_websocket_link
gql_dedupe_link
gql_error_link
gql_transform_link
Build packages:
gql_build
Local Development
To get started with local development:
Install Melos:
dart pub global activate melos && dart pub get
Bootstrap the workspace:
melos bootstrap
Run tests:
melos test
Release Process
Automated Publishing
The publish workflow is automated via GitHub Actions and triggers when:
Changes are pushed to the master or release branches AND include changes to any pubspec.yaml file
Manually triggered through GitHub Actions UI
The automated process:
Validates all packages (formatting, analysis, and tests)
Publishes packages in dependency order:
Core packages first
Execution packages second
Link implementation packages third
Build packages last
Manual Release Steps
To create a new release manually:
Ensure you're on the branch you want to release from (master or release)
Version the packages using one of the following commands:
# For a patch release
melos run bump-patch
# For a minor release
melos run bump-minor
# For a major release
melos run bump-major
# For an alpha release
melos run bump-alpha
# To graduate from prerelease(alpha) to stable
melos run graduate
Push the changes and tags:
git push && git push --tags
The GitHub Action will automatically handle publishing to pub.dev if changes include pubspec.yaml files
Versioning Rules
Use bump-patch for backward-compatible bug fixes
Use bump-minor for backward-compatible features
Use bump-major for breaking changes
Use bump-alpha for prerelease versions
Use graduate to promote prerelease versions to stable
Available Melos Commands
melos bootstrap: Set up the workspace
melos clean: Clean all packages
melos test: Run tests for all packages
melos format: Format all packages
melos analyze: Run static analysis
melos build: Run build_runner for all packages
melos publish: Publish packages to pub.dev
Troubleshooting
If the automated publish fails:
Check the GitHub Actions logs for specific errors
Ensure all tests are passing locally: melos test
Verify that version numbers in pubspec.yaml files are correct
Check that all dependencies are properly versioned
For manual publishing (if needed, requires pub dev authentication):