How do I get yarn installed on elastic beanstalk?
Currently you can't install yarn using yum so there doesn't seem to be an easy way to create a config that installs it before asset pre-compilation.
Solution 1:
You can customize packages that are installed and commands that are run on deploy with .ebextensions
For yarn, I created a file with the following commands which install a recent node version and yarn:
# .ebextensions/yarn.config
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:
# don't run the command if yarn is already installed (file /usr/bin/yarn exists)
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
More Documentation: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
Solution 2:
As stated in the accepted answer, you can create .ebextensions/some.config
to order EB instances to install yarn on the instance creation. In current EB environment, I find following config to be more succinct and understandable:
# .ebextensions/some.config
commands:
01_install_yarn:
command: |
set -e
npm i -g yarn
ln -s "$(npm bin --global)"/yarn /usr/bin/yarn
test: "! yarn -v"
In fact, current EB ruby environment includes node
binary available at /usr/bin/node
, you can use that to install yarn
via npm
.