阿波罗服务器 + GraphQL代码生成启动模板

首先

当使用Apollo Server进行GraphQL服务器端开发时,如果有一个可以快速创建的模板,就会很方便。为了充分享受GraphQL类型的好处,这个教程还包含了GraphQL Codegen模板。

设置模板

使用两个终端如下图所示。首先,打开第一个终端,从模板设置到执行GraphQL Codegen的操作。

アートボード 2.png

行动:请输入以下指令。您可以全部复制和粘贴后执行。

mkdir server
cd server

# node.js setup
npm init -y
echo "node_modules" > .gitignore

# install and initialize typescript
npm install --save-dev typescript
npx tsc --init

# ts-node-dev: watch and restart a TypeScript server
npm install --save-dev ts-node-dev
npm pkg set scripts.start="ts-node-dev --watch src/* --respawn src/index.ts"

# apollo server
npm install apollo-server graphql

# install and setup graphql-codegen
npm install --save-dev @graphql-codegen/cli
# ここで npx graphql-code-generator init を行ってもよいが、そうすると対話モードに入って手入力が増えるのと、
# 結局は npx graphql-code-generator init で生成されたconfig.ymlを上書き更新することになるので、以下はnpm installのみ行って config.ymlは後ほど作成
npm install --save-dev  @graphql-codegen/typescript @graphql-codegen/typescript-resolvers
npm pkg set scripts.generate="graphql-codegen --config codegen.yml --watch ./schema.gql" # update generate script

# copy files
mkdir src
mkdir data
curl https://raw.githubusercontent.com/richardimaoka/tutorial-apollo-server-setup/main/server/codegen.yml > codegen.yml
curl https://raw.githubusercontent.com/richardimaoka/tutorial-apollo-server-setup/main/server/schema.gql > schema.gql
curl https://raw.githubusercontent.com/richardimaoka/tutorial-apollo-server-setup/main/server/src/index.ts > src/index.ts
curl https://raw.githubusercontent.com/richardimaoka/tutorial-apollo-server-setup/main/server/data/Query.json > data/Query.json

请执行以下命令。

npm run generate

结果:如果显示如下,就是没问题的。

✔ Parse Configuration
✔ Generate outputs
  ℹ Watching for changes...

请持续运行此终端,以便保持GraphQL Codegen进程运行。

请打开一个新的终端窗口。

アートボード 3.png

请执行以下命令。

cd server
npm start

结果应该显示如下:如果出现这种情况,Apollo Server 就已经启动了。

[INFO] 14:30:40 ts-node-dev ver. 1.1.8 (using ts-node ver. 9.1.1, typescript ver. 4.5.4)
?  Server ready at http://localhost:4000/
2022-01-25_00h36_15.png
2022-08-01_00h19_04.png
广告
将在 10 秒后关闭
bannerAds