🙆
Next.jsをAmplify Hostingでモノレポ対応するまでにやったこと
前提
バージョン
- Nextjs:13.1.6
- @aws-amplify/cli:10.5.2
ディレクトリ構成
.
├── packages
│ ├── api
│ └── web
└── package.json
Amplify Hostingのデフォルトの設定ではデプロイできない
2023年2月8日時点でAmplifyが自動生成するamplify.ymlではモノレポ環境のNextjsをデプロイすることはできませんでした。
version: 1
applications:
- backend:
phases:
build:
commands:
- '# Execute Amplify CLI with the helper script'
- amplifyPush --simple
frontend:
phases:
preBuild:
commands:
- yarn install
build:
commands:
- yarn run build
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- node_modules/**/*
appRoot: packages/web
やったこと
モノレポ環境ではルートディレクトリがトレース対象にならないので、next.config.js
で以下の設定を追加する。
experimental: {
outputFileTracingRoot: path.join(__dirname, '../../'),
}
Advanced Features: Output File Tracing | Next.js
.next/standalone
がAmplify Hostingが期待する形になるように、postBuildをamplify.ymlに追加する。
version: 1
applications:
- backend:
phases:
build:
commands:
- '# Execute Amplify CLI with the helper script'
- amplifyPush --simple
frontend:
phases:
preBuild:
commands:
- cd ../../
- yarn install
build:
commands:
- cd packages/web
- yarn run build
postBuild:
commands:
- shopt -s dotglob
- mv -f .next/standalone/packages/vendor/* .next/standalone
- rm -rf .next/standalone/packages
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- node_modules/**/*
appRoot: apps/vendor
Cannot find module 'next/dist/server/next-server.js' · Discussion #39432 · vercel/next.js
Discussion