vercelでserverless functionを使う
設定
code:vercel.json
{
"functions": {
"api/**/*.jts": { "runtime": "vercel-deno@3.0.1" } }
}
code:.vercelignore
/*
!api
!vercel.json
code:.gitignore
.vercel
当然だがpackage.jsonとかは一切必要ない
code:hello.ts
/// <reference lib="deno.ns" />
export default (req: Request) => {
return new Response(Hello, from Deno v${Deno.version.deno}!);
};
注意点
codeはすべて./api/の下に入れておく
他の場所に入れるとdeployに失敗する
vercel devは通る
install(以下のコマンドからどれか1つだけ使う)
code:pnpm(sh)
pnpm i -g vercel
code:yarn(sh)
yarn global add vercel
code:npm(sh)
npm i -g vercel
log in
$ vercel login
複数のログイン方法から選ぶことができる
https://gyazo.com/fca7ff75ebded99962979cf933c1a8b4
GitHubでのログインを選択した場合は、ブラウザが立ち上がる link
$ vercel link
ワークスペースのセットアップを行う
localでテスト
$ vercel dev
成功すればReady!と表示される
https://gyazo.com/37f679d9f8208b792ca2e16864a54b35
この画像の場合は、http://localhost:3000/api/<拡張子なしのファイル名>にアクセスすることで、作成したファイルにアクセスできる
api以下ではなくルートパス以下にアクセスしても表示するようにしたい場合は、vercel.jsonに以下の設定を加える code:vercel.json
{
// 中略
,"rewrites": [
{
"source": "/:path(.*)",
"destination": "/api/:path"
}
]
}
パスに関する参考資料
この設定をすることで、api/index.<拡張子>がドメインのみのURLでアクセスした際に開かれるようになる
References