GraphQL に限らず、Node アプリケーションを作成する際に、役に立つ nodemon の、特に GraphQL を開発する際に便利な設定を紹介します。

ドキュメントより nodemon の概要

nodemon は、Node.js ベースのアプリケーション開発を手助けします。ディレクトリ内のファイル変更を検知し、Node.js アプリケーションを再起動します。

nodemon is a tool that helps develop node.js based applications by automatically restarting the node application when file changes in the directory are detected.

nodemon を使用するために開発中のコードやメソッドを変更する必要は「ありません」。nodemon は node を置き換えるラッパーですので、nodemon を使うためには、スクリプトを実行するコマンドライン中の node という単語を nodemon に置き換えるだけです。

nodemon does not require any additional changes to your code or method of development. nodemon is a replacement wrapper for node, to use nodemon replace the word node on the command line when executing your script.

ということで

npm script 内で node index.js とかって書くところを nodemon index.js って置き換えるだけでつかえるってことですね。さらに開発ディレクトリ内にあるファイルが変更された時に (デフォルトでは .js, .mjs, .coffee, .litcoffee, .json を見てるとのこと) 、このスクリプトを再実行してくれるわけです。ファイルを書き換えるたびに、node index.js って実行するのは面倒ですからね。

使い方

yarn add nodemon してインストールして、あとは npm script に nodemon 込みでスクリプトを書くわけですが、一点オススメの設定があります。

実行する際に -e でオプショナルな設定をします。-e の後ろに拡張子を書くと、その拡張子だけを監視の対象にします。ので、デフォルトの設定でもいいですけど、明確に監視してほしいファイルが決まっている場合には、こうしたほうがいいですね。

特に、今回は .graphql を使っていくのでこれを対象に入れる必要があります。

package.json
{
  "name": "qraph-ql",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "nodemon": "^1.18.7"
  },
  "scripts": {
    "start": "nodemon index.js -e js, json, graphql"
  }
}

あとは yarn run start で実行すれば nodemonindex.js を実行し、さらに js, json, graphql 拡張子を監視して、 index.js を再起動してくれます。便利。