Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

NestJSとGraphQLで開発用の環境を作成する

$
0
0

NestJS と GraphQL で開発用の環境を作成する

目次

  1. NestJS のアプリケーションを作成
  2. GraphQL の依存関係を構築する
  3. mysql(docker)を用意する
  4. mysql の依存関係を構築する

1. NestJS のアプリケーションを作成

NestCliを用いて NestJS のアプリケーションを構築する。

cli を install していない時は、上の URL から cli を install してアプリケーションを作成します。

$ nest new nestjs-graphql
$ npm run start:dev

localhost:3000で下記画面が表示されることを確認します。

localhost.png

2. GraphQL の依存関係を構築する

Qiita 記事で記載しましたが、依存関係を解決していきます。

GraphQL を利用するのに必要な 4 つをインストールしていきます。

$npm i --save @nestjs/graphql graphql-tools graphql apollo-server-express

library の型定義で error がはかれないように、tsconfig.json を編集します。

tsconfig.json
{"compilerOptions":{"module":"commonjs","declaration":true,"removeComments":true,"emitDecoratorMetadata":true,"experimentalDecorators":true,"target":"es2017","sourceMap":true,"outDir":"./dist","baseUrl":"./","incremental":true,//ここから追記"skipLibCheck":true  //ここまで追記},"exclude":["node_modules","dist"]}

公式ドキュメントをもとに GraphQL の依存関係を app.module に定義していきます。

src/app.module.ts
import{Module}from'@nestjs/common';import{GraphQLModule}from'@nestjs/graphql';import{join}from'path';@Module({imports:[GraphQLModule.forRoot({debug:false,playground:true,typePaths:['./**/*.graphql'],definitions:{path:join(process.cwd(),'src/graphql.ts'),outputAs:'class',},}),],})exportclassAppModule{}

サーバーを起動し、play groundにアクセスして paly groud が表示されることを確認します。

$npm run start:dev

下記のように Play Ground が表示されます。

playgorund.png

3. mysql(docker)を用意する

docker-compose.ymlDockerfileを追加していきます。

$ touch docker-compose.yml
$ touch Dockerfile

現状のディレクトリ構成は、以下になる想定です。

$tree -L 1 -I node_modules
.
├── Dockerfile
├── README.md
├── dist
├── docker-compose.yml
├── nest-cli.json
├── package-lock.json
├── package.json
├── src
├── test
├── tsconfig.build.json
└── tsconfig.json

MySQL のみの docker を作成するので、起動に必要な設定を作成していきます。

FROM mysql:5.7
docker-compose.yml
version:'3.7'services:db:build:.command:--default-authentication-plugin=mysql_native_passwordrestart:alwaystty:trueports:-'3306:3306'environment:MYSQL_ROOT_PASSWORD:exampleMYSQL_DATABASE:develop

最後に docker を起動して正常に動作するか確認します。

$docker-compose up
$docker ps -a

4. mysql の依存関係を構築する

公式ドキュメントを目安に依存関係を構築していきます。

$npm install--save @nestjs/typeorm typeorm mysql

上記のインストールが完了したら、app.module に必要な設定を記載していきます。お行儀が悪いですが、とりあえず動くように設定を記載していきます。

src/app.module.ts
import{Module}from'@nestjs/common';import{GraphQLModule}from'@nestjs/graphql';import{TypeOrmModule}from'@nestjs/typeorm';import{join}from'path';@Module({imports:[GraphQLModule.forRoot({typePaths:['./**/*.graphql'],definitions:{path:join(process.cwd(),'src/models/graphql.ts'),outputAs:'class',},}),TypeOrmModule.forRootAsync({useFactory:()=>({type:'mysql',host:'localhost',port:3306,username:'root',password:'example',database:'develop',entities:[__dirname+'/**/*.entity{.ts,.js}'],synchronize:true,}),}),],})exportclassAppModule{}

上記で簡易的な設定が完了したと思うので、あとは適宜 GraphQL を記載していけば実装できます。

レポ


Viewing all articles
Browse latest Browse all 8691

Trending Articles