From 32bcb880055a4d16e2af017f3d0f878fa40400a6 Mon Sep 17 00:00:00 2001 From: Jeroen Claassens Date: Mon, 22 Apr 2024 14:46:01 +0200 Subject: [PATCH] feat: add support for yarn berry This updates the yarn plugin to better support Yarn berry (aka Yarn v2 and beyond) because some commands are no longer available or changed in modern Yarn. --- plugins/yarn/yarn.plugin.zsh | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/plugins/yarn/yarn.plugin.zsh b/plugins/yarn/yarn.plugin.zsh index 157044d71..f26aab17e 100644 --- a/plugins/yarn/yarn.plugin.zsh +++ b/plugins/yarn/yarn.plugin.zsh @@ -1,3 +1,7 @@ +# Yarn version checking +autoload -Uz is-at-least +yarn_version="$(yarn --version 2>/dev/null)" + if zstyle -T ':omz:plugins:yarn' global-path; then # Skip yarn call if default global bin dir exists [[ -d "$HOME/.yarn/bin" ]] && bindir="$HOME/.yarn/bin" || bindir="$(yarn global bin 2>/dev/null)" @@ -18,17 +22,11 @@ alias yb="yarn build" alias ycc="yarn cache clean" alias yd="yarn dev" alias yf="yarn format" -alias yga="yarn global add" -alias ygls="yarn global list" -alias ygrm="yarn global remove" -alias ygu="yarn global upgrade" alias yh="yarn help" alias yi="yarn init" alias yin="yarn install" alias yln="yarn lint" alias ylnf="yarn lint --fix" -alias yls="yarn list" -alias yout="yarn outdated" alias yp="yarn pack" alias yrm="yarn remove" alias yrun="yarn run" @@ -36,11 +34,29 @@ alias ys="yarn serve" alias yst="yarn start" alias yt="yarn test" alias ytc="yarn test --coverage" -alias yuc="yarn global upgrade && yarn cache clean" alias yui="yarn upgrade-interactive" -alias yuil="yarn upgrade-interactive --latest" +# --latest flag was removed in yarn berry so we execute the base command +is-at-least 2.0.0 "$yarn_version" \ + && alias yuil='yui' \ + || alias yuil='yarn upgrade-interactive --latest' +# The flag for installing with restrictive lockfile was changed in yarn berry +is-at-least 2.0.0 "$yarn_version" \ + && alias yii='yarn install --immutable' \ + || alias yii='yarn install --frozen-lockfile' +alias yifl="yii" alias yup="yarn upgrade" alias yv="yarn version" alias yw="yarn workspace" alias yws="yarn workspaces" alias yy="yarn why" + +# These commands should only be registered if Yarn v1 is used +if [ ! $(is-at-least 2.0.0 "$yarn_version") ]; then + alias yga="yarn global add" + alias ygls="yarn global list" + alias ygrm="yarn global remove" + alias ygu="yarn global upgrade" + alias yls="yarn list" + alias yout="yarn outdated" + alias yuca="yarn global upgrade && yarn cache clean" +fi