mirror of
https://github.com/kou029w/_.git
synced 2025-01-30 13:58:08 +00:00
update
This commit is contained in:
parent
acabdaec8c
commit
08f797b3f2
11 changed files with 2760 additions and 1874 deletions
2
vercel-fastify/.gitignore
vendored
2
vercel-fastify/.gitignore
vendored
|
@ -1,2 +1,2 @@
|
||||||
.vercel
|
.vercel
|
||||||
dist
|
node_modules
|
||||||
|
|
|
@ -1,19 +1,17 @@
|
||||||
## 何をしたかったか
|
## 何をしたかったか
|
||||||
|
|
||||||
Fastify と fastify-autoload を使って Vercel にデプロイできるかどうかチェック。
|
Fastify と @fastify/autoload を使って Vercel にデプロイできるかどうかチェック。
|
||||||
|
|
||||||
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fkou029w%2F_%2Ftree%2Fmaster%2Fvercel-fastify)
|
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fkou029w%2F_%2Ftree%2Fmaster%2Fvercel-fastify)
|
||||||
|
|
||||||
## 結果
|
## 結果
|
||||||
|
|
||||||
cjs かつ includeFiles に含めればとりあえず OK。
|
とりあえず OK
|
||||||
全部含めるなら `**` でよい。
|
|
||||||
|
|
||||||
```json
|
## ネタ
|
||||||
{
|
|
||||||
"functions": { "api/index.js": { "includeFiles": "**" } }
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
TypeScript の場合は、`vercel-build` にビルドコマンドを指定する & ビルド後に生成されるファイルを指定する。(vercel.json を参照)
|
- `api/_routes` に配置することで `api/**/*` includeFiles 不要
|
||||||
そういった設定をせず Vercel に任せると `vercel dev` では問題ないが、デプロイすると参照に失敗して 500 エラー。
|
- top-level await NG
|
||||||
|
- await する処理は必ず handler 内に完結させる必要ある
|
||||||
|
- `api/[...].ts` で `api/foo/bar` にもルーティングしてほしいのだが、うまく機能しないようだ
|
||||||
|
- vercel.json 参照
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
import { create } from "../dist/server";
|
import autoload from "@fastify/autoload";
|
||||||
|
import type { VercelRequest, VercelResponse } from "@vercel/node";
|
||||||
|
import fastify from "fastify";
|
||||||
|
import path from "node:path";
|
||||||
|
|
||||||
const server = create({ isDev: process.env.NODE_ENV === "development" });
|
const app = fastify();
|
||||||
|
|
||||||
async function index(req, res) {
|
app.register(autoload, {
|
||||||
await server.ready();
|
dir: path.resolve(__dirname, "_routes"),
|
||||||
server.server.emit("request", req, res);
|
options: {
|
||||||
|
prefix: "/api",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default async function handler(req: VercelRequest, res: VercelResponse) {
|
||||||
|
await app.ready();
|
||||||
|
app.server.emit("request", req, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default index;
|
|
||||||
|
|
|
@ -3,18 +3,15 @@
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": ":",
|
|
||||||
"vercel-build": "tsup src --clean",
|
|
||||||
"preview": "vercel dev",
|
"preview": "vercel dev",
|
||||||
"deploy": "vercel deploy"
|
"deploy": "vercel deploy"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fastify": "^3.28.0",
|
"@fastify/autoload": "^5.8.0",
|
||||||
"fastify-autoload": "^3.12.0",
|
"fastify": "^3.29.5"
|
||||||
"pino-pretty": "^7.6.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"tsup": "^5.12.6",
|
"@vercel/node": "^3.0.27",
|
||||||
"vercel": "^24.1.0"
|
"vercel": "^24.2.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2726
vercel-fastify/pnpm-lock.yaml
generated
Normal file
2726
vercel-fastify/pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,8 +0,0 @@
|
||||||
import { create, start } from "./server";
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
const server = create({ isDev: true });
|
|
||||||
await start(server, "3000");
|
|
||||||
}
|
|
||||||
|
|
||||||
main();
|
|
|
@ -1,27 +0,0 @@
|
||||||
import fastify, { FastifyInstance } from "fastify";
|
|
||||||
import autoload from "fastify-autoload";
|
|
||||||
import path from "node:path";
|
|
||||||
|
|
||||||
type Options = {
|
|
||||||
isDev?: boolean;
|
|
||||||
quiet?: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
type Server = FastifyInstance;
|
|
||||||
|
|
||||||
export function create(options: Options): Server {
|
|
||||||
const app = fastify({
|
|
||||||
logger: !options.quiet && { prettyPrint: options.isDev },
|
|
||||||
});
|
|
||||||
app.register(autoload, {
|
|
||||||
dir: path.resolve(__dirname, "routes"),
|
|
||||||
routeParams: true,
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function start(server: Server, port: string): Promise<string> {
|
|
||||||
await server.ready();
|
|
||||||
const address: string = await server.listen(port, "::");
|
|
||||||
return address;
|
|
||||||
}
|
|
|
@ -1,4 +1,8 @@
|
||||||
{
|
{
|
||||||
"functions": { "api/index.ts": { "includeFiles": "dist/**" } },
|
"rewrites": [
|
||||||
"rewrites": [{ "source": "/api/(.*)", "destination": "/api/index.ts" }]
|
{
|
||||||
|
"source": "/(.*)",
|
||||||
|
"destination": "/api/"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue