now.shのデプロイ設定ファイル「now.json」の使い方まとめ
公開日: 2019.6.22
サーバーレスなPassサービス「now.sh」でのデプロイの挙動を制御する設定ファイル「now.json」の使い方をまとめました。
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の設定については下記の記事をどうぞ。
now.shにデプロイしたAPIサーバーに、CORS(Cross-Origin Resource Sharing)設定をする
now.shでAPIなどのアプリをデプロイすると時に、CORS(Cross-Origin Resource Sharing)設定が必要になります。now.shでは、設定ファイルで簡単にheaderを追加できるので、そのやり方をまとめました。
転送ファイル設定 (files)
DB設定やハッシュなどを記載したファイルなど、レポジトリで管理したくないけど、now.shの本番環境にあげたいファイルは、ここに記載することで本番環境にだけアップすることができます。
設定ファイルや.envファイルなど、.gitignoreで除外したファイルをnowにだけアップする
アプリの設定ファイルやDBのID、パスワード情報など、gitでは管理したくないけど、now.shにだけは認識させたいケースがあります。そうした場合に、どのように対処すればいいのかをまとめました。
ただし、この設定をすると、Gitレポジトリに当該ファイルがないので、Gitレポジトリ経由の自動デプロイができなくなります。
ドメイン設定 (alias)
ドメインの設定をするのが「alias」です。
{
"alias": ["my-domain.com", "my-alias"]
}
ここに記載することで、コマンドラインから、
now --target production
コマンドを実行した際に、設定したドメインで公開することができます。
ドメインの設定とデプロイごとの挙動については、下記の記事をどうぞ。
now.shで独自ドメイン・サブドメイン設定する方法と公開URLの挙動まとめ
サーバーレスなPassサービス「now.sh」で自身の所有する独自のドメイン・サブドメインを設定する方法と、ちょっとだけ複雑な、デプロイごとに異なる公開のされ方をまとめました。
簡単にですが、now.shのデプロイ設定ファイル「now.json」の使い方を見てきました。
ここで紹介した以外にもたくさんの設定があるので、公式ドキュメント確認してみましょう。
価格は記載がある場合を除き、すべて税込みです。
関連キーワード
サーバレスの新着記事
- サーバレスCloudflare R2の料金体系・無料枠まとめ 2024.8.21
- サーバレスCloudflare R2をCyberduckで使う方法 2024.7.31
- サーバレスAIの学習ボット・クローラーからサイトを守るメリットとブロックする方法 2024.7.19
- サーバレスCloudFlare Pagesのビルド環境の違い 2024.5.9
- サーバレスCloudflare D1の料金体系・無料枠まとめ 2024.3.25
- サーバレスCloudflare PagesでNuxt3のビルド時に「ENOENT: no such file or directory」エラーの対象方法 2024.3.21
- サーバレスGitlab CLIでpush時に「glab auth not found」となった際の対処方法 2024.3.19
- サーバレスCloudFlare Workers AIの料金体系・無料枠まとめ 2024.2.2