1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

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

の順で直接指定することができます

amplify.yml
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がインストールおよび使用されていたら成功です

スクリーンショット 2024-06-17 11.28.05.png

.nvmrcファイルを使って指定する方法

.nvmrcファイルからNodeのバージョンを自動で指定することができます
package.jsonに以下のようにNodeのバージョンを記載します

package.json
{
  "engines": {
    "node": "20.10.0"
  },
  "volta": {
    "node": "20.10.0"
  }
}

以下のコマンドを使うと.nvmrcファイルにNodeのバージョンが記載されます

node --version > .nvmrc
.nvmrc
v20.10.0

以下のように

nvm install
nvm use

と記載したら.nvmrcファイルから自動でNodeのバージョンが指定されます

amplify.yml
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がインストールおよび使用されていたら成功です

スクリーンショット 2024-06-17 11.29.19.png

voltaをAmplify内にインストールして指定する方法

以下のようにVoltaを指定している場合、Amplifyのホステッドランナー内にVoltaをインストールしていればNodeのバージョンが自動で指定されます

package.json
{
  "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が自動でインストールされます

amplify.yml
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がインストールおよび使用されていたら成功です

スクリーンショット 2024-06-17 14.59.56.png

まとめ

情報が少なくて調べるのが大変でしたが無事自動でNodeのversionを指定することに成功しました
個人的にvoltaをインストールして自動で指定するやり方だとフロント側が追加で設定しなくても済む上にNodeのversionが変わってもインフラ側で設定し直さなくてもよくなるからいいな、と思いました

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?