nuxt-graphql-middleware
nuxt-graphql-middleware

GraphQLクエリとミューテーションをサーバーAPIルートとして公開します。

nuxt-graphql-middleware banner

nuxt-graphql-middleware

Nuxt 3 用の GraphQL クライアント。

ドキュメントnpmバージョン 2.x (Nuxt 2用)

Test

機能

  • 各クエリとミューテーションをAPIルートとして公開します
  • GraphQLリクエストはサーバーサイドのみで行われます
  • クエリまたはミューテーションを実行するためのコンポーザブルが含まれます
  • クライアントバンドルにGraphQLドキュメントは含まれません
  • graphql-typescript-deluxe を使用した超高速なTypeScriptコード生成
  • すべてのGraphQLファイルのHMR
  • クエリ操作のためのオプションのクライアントサイドキャッシュ
  • リクエストヘッダーの変更、応答、エラー処理
  • Nuxt DevTools との統合

セットアップ

インストール

npx nuxi@latest module add nuxt-graphql-middleware

最小限の設定で済む

export default defineNuxtConfig({
  modules: ['nuxt-graphql-middleware'],
  graphqlMiddleware: {
    graphqlEndpoint: 'https://example.com/graphql',
  },
})

すべての設定オプションを参照

使用方法

最初のクエリを作成します(例: pages/films.query.graphql)

query films {
  allFilms {
    films {
      id
    }
  }
}

クエリは useGraphqlQuery() コンポーザブル経由で利用できるようになりました

const { data, errors } = await useGraphqlQuery('films')
console.log(data.allFilms.films)

または、useAsyncData の便利なラッパーを使用します

const { data } = await useAsyncGraphqlQuery('films')
console.log(data.value.allFilms.films)

代わりに、APIルートを直接呼び出して同じ結果を得ることもできます

const response = await $fetch('/api/graphql_middleware/query/films')

または useFetch を使用します

const { data } = await useFetch('/api/graphql_middleware/query/films')

Nuxt 2

3.xリリースはNuxt 3のみに対応しています。2.xブランチとnpmでのリリースはNuxt 2に対応していますが、このバージョンはすでにメンテナンスされていません。

開発

このモジュールはデフォルトのNuxtモジュール作成セットアップを使用しており、モジュール自体は ./src にあり、プレイグラウンドは ./playground/ にあります。

セットアップ

依存関係をインストール

モジュールとプレイグラウンドの依存関係をインストールする

npm install

型を準備する

これにより、開発を開始するために必要なすべての型が生成されます。

npm run dev:prepare

Apollo Serverを開始する

プレイグラウンドは、別途構築する必要があるApolloサーバーを使用しています。

cd apollo
npm install
npm run compile
npm run start

プレイグラウンドを開始する

npm run dev

https://:3000 を開いて開発を開始できます。

テスト

Lint / コードスタイル

npm run lint
npm run prettier

ユニットテスト(Vitest)

ユニットテストはVitestを使って行われます。

npm run test:ci

E2E(Cypress)

E2EテストはCypressを使用して実行されます。テストはプレイグラウンドのビルドに対して実行されます。

npm run dev:build
npm run dev:start
npm run cypress