Приятно иметь возможность использовать 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
Сценарий:
- Создайте папку «.yarn» в своем рабочем каталоге, откуда он будет загружать сам yarn (может быть хорошей идеей gitignore этот каталог, если вы не хотите явно фиксировать его)
- Убедитесь, что пряжа уже установлена. Если он уже установлен, проверьте, какая версия пряжи установлена. Если это неправильная версия, она удалит эту версию.
- Попытайтесь загрузить правильную версию пряжи.
- Запустите пряжу.
Что вы можете настроить в скрипте
- Измените EXPECTED_YARN_VERSION на другую версию, если вы хотите использовать более новую или старую версию пряжи.
- Вместо того, чтобы загружать yarn каждый раз, когда ее нет, вы можете зафиксировать всю папку .yarn в репозитории git, чтобы она уже присутствовала для использования CI-сервером.
- Измените URL-адрес загрузки, если вы хотите разместить файл yarn tar.gz на локальном прокси, например Nexus.
- Измените последнюю команду, чтобы она могла запускать пряжу с аргументами.
Удачи!
Хакерский полдень - это то, с чего хакеры начинают свои дни. Мы часть семьи @AMI. Сейчас мы принимаем заявки и рады обсуждать рекламные и спонсорские возможности.
Чтобы узнать больше, прочтите нашу страницу о нас, поставьте лайк / напишите нам в Facebook или просто tweet / DM @HackerNoon.
Если вам понравился этот рассказ, мы рекомендуем прочитать наши Последние технические истории и Современные технические истории. До следующего раза не воспринимайте реалии мира как должное!