サーバレスのサムネイル

サーバレス

now.shのデプロイ設定ファイル「now.json」の使い方まとめ

公開日: 2019.6.22

サーバーレスなPassサービス「now.sh」でのデプロイの挙動を制御する設定ファイル「now.json」の使い方をまとめました。

編集ノート: SERVERSUSでは、パートナーリンクからコミッションを得ています。コミッションが記事の意見や、サービスの評価に影響を与えることはありません。

now.jsonとは?

now.shでのデプロイの挙動を制御するための、now.sh専用の設定ファイルです。プロジェクト内の他のアプリには影響せず、now.shでデプロイする時にだけ読み込まれます。

now.jsonの設定

ここからは、具体的な設定を見ていきます。

バージョン&プロジェクト名 (version, name)

now.shにはバージョンが2つあって、2019年6月現在、バージョン2のみが有効となっています。なので、now.jsonでバージョンを宣言します。また、プロジェクト名も必要なので、合わせて記載します。

{
  "version":2,
  "name":"now-test-project"
}

ビルド設定 (builds)

now.shでは、ビルダーを使ってアプリを生成します。その際の設定を書くのがbuildsブロックです。

{
  "builds":[
    { "src":"index.js", "use":"@now/node-server" },
  ]
}

重要なのは、「use」の部分で、ここはnow.shで指定されているビルダーを指定する必要があります。

now.shで使えるビルダーは下記の通りになっています。

  • Static (@now/static)
  • Static Builder (@now/static-build)
  • Node.js (@now/node)
  • Node.js Server (@now/node-server)
  • Next.js (@now/next)
  • Go (@now/go)
  • PHP (@now/php)
  • Python (@now/python)
  • Rust (@now/rust)
  • Bash (@now/bash)
  • mdx-deck (@now/mdx-deck)
  • OptiPNG (@now/optipng)
  • HTML Minifier (@now/html-minifier)
  • Markdown (@now/md)

カッコの中がnow.jsonに記載するビルド名です。

また、ファイル・タイプごと、ビルド設定もできます。

{
  "builds":[
    { "src":"index.js", "use":"@now/node-server" },
    { "src": "*.html", "use": "@now/static" },
    { "src": "*.js", "use": "@now/node" }  
  ]
}

srcはアプリごとに異なりますので、解説は割愛します。

ルート設定(routes)

Apacheの.htaccessのような、ルートの設定をしてくれるのがこの「routes」ブロックです。

ここには、HTTPヘッダー設定を書くこともできます。

{
  "routes":[{
    "headers":
      {
        "Access-Control-Allow-Origin":"*",
        "Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, OPTIONS",
        "Access-Control-Allow-Headers":"X-Requested-With, Content-Type, Accept"
      },
      "src":"/.*",
      "dest":"/index.js"
    }
  }
}

「src」がリクエストで、「dest」がルート先です。

上記の例では、「すべてのURLアクセスを、index.jsにリダイレクトさせる」という設定になります。複数書くことで、様々なルート設定ができます。ルートごとにヘッダ設定もできます。

{
  "routes":[
      { "src": "/custom-page", "headers": {"cache-control": "s-maxage=1000"}, "dest": "/index.html" },
      { "src": "/api", "dest": "/my-api.js" },
  ]
}

また、HTTPヘッダーにかけるので、CORSやキャッシュ設定などもできます。CORSの設定については下記の記事をどうぞ。

転送ファイル設定 (files)

DB設定やハッシュなどを記載したファイルなど、レポジトリで管理したくないけど、now.shの本番環境にあげたいファイルは、ここに記載することで本番環境にだけアップすることができます。

ただし、この設定をすると、Gitレポジトリに当該ファイルがないので、Gitレポジトリ経由の自動デプロイができなくなります。

ドメイン設定 (alias)

ドメインの設定をするのが「alias」です。

{
  "alias": ["my-domain.com", "my-alias"]
}

ここに記載することで、コマンドラインから、

now --target production

コマンドを実行した際に、設定したドメインで公開することができます。

ドメインの設定とデプロイごとの挙動については、下記の記事をどうぞ。


簡単にですが、now.shのデプロイ設定ファイル「now.json」の使い方を見てきました。

ここで紹介した以外にもたくさんの設定があるので、公式ドキュメント確認してみましょう。

Deployment Configuration (now.json)


価格は記載がある場合を除き、すべて税込みです。

関連キーワード

サーバレスの新着記事