Приятно иметь возможность использовать yarn вместо npm на CI-сервере, но часто вам нужен root-доступ к npm install -g yarn. Вот сценарий bash, который вы можете использовать, чтобы установить yarn (если его нет), а затем запустить «yarn»:

#!/bin/bash
# Choose which version of yarn you want to use
EXPECTED_YARN_VERSION="0.16.1"

function install_yarn {
  mkdir -p .yarn
  DOWNLOAD_URL="https://github.com/yarnpkg/yarn/releases/download/v$EXPECTED_YARN_VERSION/yarn-v$EXPECTED_YARN_VERSION.tar.gz"
  echo "Downloading from $DOWNLOAD_URL"
  curl -fL $DOWNLOAD_URL > .yarn/yarn.tar.gz
  tar zxf .yarn/yarn.tar.gz  --strip-components=1 -C .yarn
}

if [ -f .yarn/bin/yarn ]; then
  YARN_VERSION=$(node -e 'const fs = require("fs"); console.log(JSON.parse(fs.readFileSync(".yarn/package.json")).version);')
  if [ "$YARN_VERSION" != "$EXPECTED_YARN_VERSION" ]; then
    echo "The yarn version is $YARN_VERSION, expected $EXPECTED_YARN_VERSION. Re-downloading"
    rm -rf .yarn
    install_yarn
  fi
else
  echo "The file .yarn/bin/yarn does not exist, installing yarn".
  install_yarn
fi

./.yarn/bin/yarn

Сценарий:

  1. Создайте папку «.yarn» в своем рабочем каталоге, откуда он будет загружать сам yarn (может быть хорошей идеей gitignore этот каталог, если вы не хотите явно фиксировать его)
  2. Убедитесь, что пряжа уже установлена. Если он уже установлен, проверьте, какая версия пряжи установлена. Если это неправильная версия, она удалит эту версию.
  3. Попытайтесь загрузить правильную версию пряжи.
  4. Запустите пряжу.

Что вы можете настроить в скрипте

  1. Измените EXPECTED_YARN_VERSION на другую версию, если вы хотите использовать более новую или старую версию пряжи.
  2. Вместо того, чтобы загружать yarn каждый раз, когда ее нет, вы можете зафиксировать всю папку .yarn в репозитории git, чтобы она уже присутствовала для использования CI-сервером.
  3. Измените URL-адрес загрузки, если вы хотите разместить файл yarn tar.gz на локальном прокси, например Nexus.
  4. Измените последнюю команду, чтобы она могла запускать пряжу с аргументами.

Удачи!

Хакерский полдень - это то, с чего хакеры начинают свои дни. Мы часть семьи @AMI. Сейчас мы принимаем заявки и рады обсуждать рекламные и спонсорские возможности.

Чтобы узнать больше, прочтите нашу страницу о нас, поставьте лайк / напишите нам в Facebook или просто tweet / DM @HackerNoon.

Если вам понравился этот рассказ, мы рекомендуем прочитать наши Последние технические истории и Современные технические истории. До следующего раза не воспринимайте реалии мира как должное!