はじめに
Nest.jsを簡単に動かす環境が欲しいな〜と思い、Vercelが個人的に使いやすく好きなのでデプロイしてみました。
設定
vercel.jsonをルートに設置します。
{
"version": 2,
"builds": [
{
"src": "src/main.ts",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "src/main.ts"
}
]
}
package.jsonに1行追記します。
"scripts": {
"build": "nest build",
"vercel-build": "tsc && npm run lint && npm run test && prisma generate && npm run build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json"
},
prismaを使わない場合は、prisma generateの箇所は不要です。
これでgithubにあげ、vercelとgithubを連携させます。
pushすると動いてくれるようになります!!!
注意点
パスエイリアスの設定がうまく動きませんでした。
tsconfig.json
"paths": {
"@src/*": ["src/*"]
}
このように、src配下にエイリアスを指定したのですが、
Cannot find module '@src/users/users.service'
Require stack:
- /var/task/src/auth/auth.service.js
- /var/task/src/auth/auth.module.js
- /var/task/src/app.module.js
- /var/task/src/main.js
のようにパスが見つからないのか、500エラーで動かず。。。
vercel.jsonのビルドパス設定したら直るやつかも???🤔