在 Elastic Beanstalk 上使用 Yarn 安装包
Install packages with Yarn on Elastic Beanstalk
我想使用 Yarn 作为 NPM 的替代方案在 Elastic Beanstalk 上安装包。我尝试了在网上找到的各种解决方案,但它们似乎都已过时且不再有效。这是我现在所拥有的,如 this gist.
中所述
files:
'/opt/elasticbeanstalk/hooks/appdeploy/pre/49yarn.sh' :
mode: '000755'
owner: root
group: root
content: |
#!/usr/bin/env bash
set -euxo pipefail
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
if node -v; then
echo 'Node already installed.'
else
echo 'Installing node...'
curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
yum -y install nodejs
fi
if yarn -v; then
echo 'Yarn already installed.'
else
echo 'Installing yarn...'
wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum -y install yarn
fi
'/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh' :
mode: '000755'
owner: root
group: root
content: |
#!/usr/bin/env bash
set -euxo pipefail
yarn install --ignore-engines
这就是我用来 运行 Yarn on Beanstalk 的方法:
commands:
01_install_node:
command: |
sudo curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs
02_install_yarn:
test: '[ ! -f /usr/bin/yarn ] && echo "Yarn not found, installing..."'
command: |
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn
container_commands:
01_run_yarn:
command: |
yarn install
yarn run encore production
以上答案仅适用于 Amazon Linux (AMI) 1 版本。如果您使用的是 AMI 版本 2,您可以执行以下操作:
- 创建一个包含以下内容的
.platform/hooks/prebuild/yarn.sh
文件:
#!/bin/bash
# need to install node first to be able to install yarn (as at prebuild no node is present yet)
sudo curl --silent --location https://rpm.nodesource.com/setup_14.x | sudo bash -
sudo yum -y install nodejs
# install yarn
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn
# install
cd /var/app/staging/
# debugging..
ls -lah
yarn install --prod
chown -R webapp:webapp node_modules/ || true # allow to fail
- 一定要 chmod +x 这个文件(它需要是可执行的)
https://gist.github.com/cooperka/0960c0652353923883db15b4b8fc8ba5#gistcomment-3390935
我想使用 Yarn 作为 NPM 的替代方案在 Elastic Beanstalk 上安装包。我尝试了在网上找到的各种解决方案,但它们似乎都已过时且不再有效。这是我现在所拥有的,如 this gist.
中所述files:
'/opt/elasticbeanstalk/hooks/appdeploy/pre/49yarn.sh' :
mode: '000755'
owner: root
group: root
content: |
#!/usr/bin/env bash
set -euxo pipefail
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
if node -v; then
echo 'Node already installed.'
else
echo 'Installing node...'
curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
yum -y install nodejs
fi
if yarn -v; then
echo 'Yarn already installed.'
else
echo 'Installing yarn...'
wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum -y install yarn
fi
'/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh' :
mode: '000755'
owner: root
group: root
content: |
#!/usr/bin/env bash
set -euxo pipefail
yarn install --ignore-engines
这就是我用来 运行 Yarn on Beanstalk 的方法:
commands:
01_install_node:
command: |
sudo curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs
02_install_yarn:
test: '[ ! -f /usr/bin/yarn ] && echo "Yarn not found, installing..."'
command: |
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn
container_commands:
01_run_yarn:
command: |
yarn install
yarn run encore production
以上答案仅适用于 Amazon Linux (AMI) 1 版本。如果您使用的是 AMI 版本 2,您可以执行以下操作:
- 创建一个包含以下内容的
.platform/hooks/prebuild/yarn.sh
文件:
#!/bin/bash
# need to install node first to be able to install yarn (as at prebuild no node is present yet)
sudo curl --silent --location https://rpm.nodesource.com/setup_14.x | sudo bash -
sudo yum -y install nodejs
# install yarn
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn
# install
cd /var/app/staging/
# debugging..
ls -lah
yarn install --prod
chown -R webapp:webapp node_modules/ || true # allow to fail
- 一定要 chmod +x 这个文件(它需要是可执行的)
https://gist.github.com/cooperka/0960c0652353923883db15b4b8fc8ba5#gistcomment-3390935