Amplify consoleで npm ビルドをする、その時のnodeのバージョンについて
- デフォルトNodeバージョンが14.18.0 だったり、14.18.1 にだったり。
- Amplify consoleでデプロイするようにすると、その時にセットアップされた nodeのバージョンがデフォルトで使われるような動きにも見えるが、そうでもない動き。
- どのバージョンでビルドしているのか、バージョン変えるにはどうするのかを確認・変更方法です
この記事は、2022-03-28, 3/29時点の情報です。
Nodeのバージョンを確認する方法
- ビルドはデフォルトのままであれば、Amazon Linux2イメージが使われる
- ビルドのamplify.yml の設定でデフォルトでは Node12,14,16あたりは入っているがバージョンはAWS側で用意されたバージョンとなる
- AWSマネジメントコンソールの Amplifyのアプリ設定にある「ビルド設定」のデフォルト値の確認
- アプリケーション構築の仕様の「編集」より
version: 1
frontend:
phases:
preBuild:
commands:
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: build
files:
- '**/*'
cache:
paths:
- node_modules/**/*
- 以前は、
npm install
の記載があったが、2021年11,12月頃にnpm ci
がデフォルトに変わった
amplify.yml で nodeのバージョンを確認するためにコマンドを追加
- preBuildフェーズで、
node -v
でビルドログにバージョンを表示させる
frontend:
phases:
preBuild:
commands:
- node -v
- npm ci
build:
commands:
- npm run build
- ビルドログ いつのまにか 14.19.0 になっている( 14.18.0から変わった)
2022-03-29T06:33:36.697Z [INFO]: # Retrieving cache...
2022-03-29T06:33:39.264Z [INFO]: # Extracting cache...
2022-03-29T06:33:42.605Z [INFO]: # Extraction completed
# Starting phase: preBuild
# Executing command: node -v
2022-03-29T06:34:09.783Z [INFO]: v14.19.0
2022-03-29T06:34:09.783Z [INFO]: # Executing command: npm ci
2022-03-29T06:34:10.909Z [WARNING]: npm
2022-03-29T06:34:10.910Z [WARNING]: WARN prepare removing existing node_modules/ before installation
node 14系の最新を入れる
- ビルド設定
version: 1
frontend:
phases:
preBuild:
commands:
- nvm install 14
- node -v
- npm ci
build:
commands:
- npm run build
- ビルドログ、v14.19.1がインストールされている
2022-03-29T08:43:07.995Z [INFO]: # Extraction completed
# Starting phase: preBuild
# Executing command: nvm install 14
2022-03-29T08:43:34.299Z [INFO]: Downloading and installing node v14.19.1...
2022-03-29T08:43:34.420Z [WARNING]: Downloading https://nodejs.org/dist/v14.19.1/node-v14.19.1-linux-x64.tar.gz...
2022-03-29T08:43:34.539Z [WARNING]: ##### 7.7%
2022-03-29T08:43:34.639Z [WARNING]: #################################################### 72.4%
2022-03-29T08:43:34.674Z [WARNING]: ##############################
2022-03-29T08:43:34.674Z [WARNING]: ########################################## 100.0%
2022-03-29T08:43:34.691Z [WARNING]: Computing checksum with sha256sum
2022-03-29T08:43:34.779Z [WARNING]: Checksums matched!
2022-03-29T08:43:35.841Z [INFO]: Now using node v14.19.1 (npm v6.14.16)
2022-03-29T08:43:35.872Z [INFO]: Installing default global packages from /root/.nvm/default-packages...
npm install -g --quiet yarn@1.22.0
2022-03-29T08:43:37.346Z [INFO]: /root/.nvm/versions/node/v14.19.1/bin/yarnpkg -> /root/.nvm/versions/node/v14.19.1/lib/node_modules/yarn/bin/yarn.js
2022-03-29T08:43:37.347Z [INFO]: /root/.nvm/versions/node/v14.19.1/bin/yarn -> /root/.nvm/versions/node/v14.19.1/lib/node_modules/yarn/bin/yarn.js
2022-03-29T08:43:37.348Z [INFO]: + yarn@1.22.0
added 1 package in 1.107s
2022-03-29T08:43:37.392Z [INFO]: # Executing command: node -v
2022-03-29T08:43:37.395Z [INFO]: v14.19.1
2022-03-29T08:43:37.395Z [INFO]: # Executing command: npm ci
2022-03-29T08:43:37.743Z [WARNING]: npm
2022-03-29T08:43:37.743Z [WARNING]: WARN prepare removing existing node_modules/ before installation
2022-03-29T08:43:50.706Z [INFO]: > core-js@3.20.0 postinstall /codebuild/output/src091330464/src/sugimoto-apptest/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
2022-03-29T08:43:50.751Z [INFO]: [96mThank you for using core-js ([94m https://github.com/zloirock/core-js [96m) for polyfilling JavaScript standard library![0m
[96mThe project needs your help! Please consider supporting of core-js:[0m
[96m>[94m https://opencollective.com/core-js [0m
[96m>[94m https://patreon.com/zloirock [0m
[96m>[94m https://paypal.me/zloirock [0m
[96m>[94m bitcoin: bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz [0m
[96mAlso, the author of core-js ([94m https://github.com/zloirock [96m) is looking for a good job -)[0m
2022-03-29T08:43:50.971Z [INFO]: > core-js-pure@3.20.0 postinstall /codebuild/output/src091330464/src/sugimoto-apptest/node_modules/core-js-pure
> node -e "try{require('./postinstall')}catch(e){}"
2022-03-29T08:43:51.123Z [INFO]: added 1403 packages in 13.397s
2022-03-29T08:43:51.137Z [INFO]: # Completed phase: preBuild
# Starting phase: build
# Executing command: npm run build
2022-03-29T08:43:51.305Z [INFO]: > apptest@0.1.0 build /codebuild/output/src091330464/src/sugimoto-apptest
> react-scripts build
2022-03-29T08:43:52.434Z [INFO]: Creating an optimized production build...
Nodeバージョンを指定する(バージョン固定)サンプル
- ビルド設定
version: 1
frontend:
phases:
preBuild:
commands:
- nvm install 14.18.3
- node -v
- npm ci
build:
commands:
- npm run build
- ビルドログ
# Executing command: nvm install 14.18.3
2022-03-29T08:48:18.392Z [INFO]: Downloading and installing node v14.18.3...
2022-03-29T08:48:18.517Z [WARNING]: Downloading https://nodejs.org/dist/v14.18.3/node-v14.18.3-linux-x64.tar.gz...
2022-03-29T08:48:18.634Z [WARNING]: ##
2022-03-29T08:48:18.635Z [WARNING]: 4.1%
2022-03-29T08:48:18.735Z [WARNING]: ##################
2022-03-29T08:48:18.736Z [WARNING]: ############## 45.8%
2022-03-29T08:48:18.836Z [WARNING]: #####################
2022-03-29T08:48:18.837Z [WARNING]: ############################################# 92.3%
2022-03-29T08:48:18.848Z [WARNING]: ################
2022-03-29T08:48:18.849Z [WARNING]: ######################################################## 100.0%
2022-03-29T08:48:18.864Z [WARNING]: Computing checksum with sha256sum
2022-03-29T08:48:18.950Z [WARNING]: Checksums matched!
2022-03-29T08:48:20.027Z [INFO]: Now using node v14.18.3 (npm v6.14.15)
2022-03-29T08:48:20.057Z [INFO]: Installing default global packages from /root/.nvm/default-packages...
2022-03-29T08:48:20.057Z [INFO]: npm install -g --quiet yarn@1.22.0
2022-03-29T08:48:21.666Z [INFO]: /root/.nvm/versions/node/v14.18.3/bin/yarn -> /root/.nvm/versions/node/v14.18.3/lib/node_modules/yarn/bin/yarn.js
2022-03-29T08:48:21.668Z [INFO]: /root/.nvm/versions/node/v14.18.3/bin/yarnpkg -> /root/.nvm/versions/node/v14.18.3/lib/node_modules/yarn/bin/yarn.js
2022-03-29T08:48:21.669Z [INFO]: + yarn@1.22.0
added 1 package in 1.286s
2022-03-29T08:48:21.702Z [INFO]: # Executing command: node -v
2022-03-29T08:48:21.705Z [INFO]: v14.18.3
14.18.3になった
Node16系を使う
-
nvm use $VERSION_NODE_16
を指定する - ビルド設定
version: 1
frontend:
phases:
preBuild:
commands:
- nvm use $VERSION_NODE_16
- node -v
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: build
files:
- '**/*'
cache:
paths:
- node_modules/**/*
- ビルドログ
# Starting phase: preBuild
# Executing command: nvm use 16
2022-03-29T09:05:08.405Z [INFO]: Now using node v16.13.2 (npm v8.1.2)
2022-03-29T09:05:08.407Z [INFO]: # Executing command: node -v
2022-03-29T09:05:08.409Z [INFO]: v16.13.2
2022-03-29T09:05:08.410Z [INFO]: # Executing command: npm ci
16.13.2 が使われる(Amazon Linux2のDockerイメージでは、2022/3/28時点では 16.13.2が入っていることになる)
Amazon Linux2 Docker イメージ情報
- Node14がデフォルトになっている
ENV VERSION_NODE_DEFAULT=$VERSION_NODE_14
- Node16をデフォルトにするなら、こんな感じかな、先の
nvm use $VERSION_NODE_16
でも良い
ENV VERSION_NODE_DEFAULT=$VERSION_NODE_16
Node16のltsのビルド設定
version: 1
frontend:
phases:
preBuild:
commands:
- nvm install --lts
- nvm use $VERSION_NODE_16
- node -v
- npm ci
build:
commands:
- npm run build
- ビルドログ
# Starting phase: preBuild
# Executing command: nvm install --lts
-29T09:18:47.710Z [INFO]: found 0 vulnerabilities
2022-03-29T09:18:47.715Z [INFO]: # Executing command: nvm use 16
2022-03-29T09:18:48.058Z [INFO]: Now using node v16.14.2 (npm v8.5.0)
2022-03-29T09:18:48.059Z [INFO]: # Executing command: node -v
2022-03-29T09:18:48.062Z [INFO]: v16.14.2
16.14.2が使われている