概要
AmplifyのNodeのVersionをコンソール画面から手動で変更するのは手間なので
- amplify.ymlにNodeのversionを直接記載する方法
- .nvmrcファイルを使って指定する方法
- voltaをAmplify内にインストールして指定する方法 <- オススメ
の3つについて解説したいと思います
前提
- 今回はバージョン20.10.0を例に解説します
ディレクトリ構成
tree
├── .gitignore
├── Dockerfile
├── README.md
└── application
├── src
├── next-env.d.ts
├── next.config.js
├── package-lock.json
└── package.json
amplify.ymlに直接記載する方法
以下のようにnvmを使って使用したいNodeのバージョンを
nvm install 20.10.0
nvm use 20.10.0
の順で直接指定することができます
applications:
- appRoot: application
frontend:
phases:
preBuild:
commands:
- nvm install 20.10.0
- nvm use 20.10.0
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: .next
files:
- "**/*"
cache:
paths:
- "node_modules/**/*"
実際に実行してみよう
以下のようにnvmを使ってNodeのバージョン20.10.0がインストールおよび使用されていたら成功です
.nvmrcファイルを使って指定する方法
.nvmrcファイルからNodeのバージョンを自動で指定することができます
package.jsonに以下のようにNodeのバージョンを記載します
{
"engines": {
"node": "20.10.0"
},
"volta": {
"node": "20.10.0"
}
}
以下のコマンドを使うと.nvmrcファイルにNodeのバージョンが記載されます
node --version > .nvmrc
v20.10.0
以下のように
nvm install
nvm use
と記載したら.nvmrcファイルから自動でNodeのバージョンが指定されます
applications:
- appRoot: application
frontend:
phases:
preBuild:
commands:
- nvm install
- nvm use
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: .next
files:
- "**/*"
cache:
paths:
- "node_modules/**/*"
実際に実行してみよう
以下のように.nvmrcファイルに記載されているNodeのバージョン20.10.0がインストールおよび使用されていたら成功です
voltaをAmplify内にインストールして指定する方法
以下のようにVoltaを指定している場合、Amplifyのホステッドランナー内にVoltaをインストールしていればNodeのバージョンが自動で指定されます
{
"engines": {
"node": "20.10.0"
},
"volta": {
"node": "20.10.0"
}
}
curl https://get.volta.sh | bash
を使ってVoltaをインストールします
source ~/.bash_profile
がないとVoltaがインストールされていると認識されないので忘れず記載します
volta install node
でpackage.jsonに記載されたNodeが自動でインストールされます
version: 1
applications:
- appRoot: application
frontend:
phases:
preBuild:
commands:
- curl https://get.volta.sh | bash
- source ~/.bash_profile
- volta install node
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: .next
files:
- "**/*"
cache:
paths:
- "node_modules/**/*"
実際に実行してみよう
以下のようにpackage.jsonに記載されているNodeのバージョン20.10.0がインストールおよび使用されていたら成功です
まとめ
情報が少なくて調べるのが大変でしたが無事自動でNodeのversionを指定することに成功しました
個人的にvoltaをインストールして自動で指定するやり方だとフロント側が追加で設定しなくても済む上にNodeのversionが変わってもインフラ側で設定し直さなくてもよくなるからいいな、と思いました
参考