diff --git a/plugins/yarn/README.md b/plugins/yarn/README.md
index 5c7c7f323..f1d089b1f 100644
--- a/plugins/yarn/README.md
+++ b/plugins/yarn/README.md
@@ -1,7 +1,7 @@
# Yarn plugin
-This plugin adds completion for the [Yarn package manager](https://yarnpkg.com/en/),
-as well as some aliases for common Yarn commands.
+This plugin adds completion for the [Yarn package manager](https://yarnpkg.com/en/), as well as some aliases
+for common Yarn commands.
To use it, add `yarn` to the plugins array in your zshrc file:
@@ -11,48 +11,64 @@ plugins=(... yarn)
## Global scripts directory
-It also adds `yarn` global scripts dir (commonly `~/.yarn/bin`) to the `$PATH`.
-To disable this feature, set the following style in your `.zshrc`:
+It also adds `yarn` global scripts dir (commonly `~/.yarn/bin`) to the `$PATH`. To disable this feature, set
+the following style in your `.zshrc`:
```zsh
zstyle ':omz:plugins:yarn' global-path no
```
+## Yarn Berry
+
+If you are using Yarn berry (a.k.a. Yarn version 2 or higher) as your global Yarn version you should configure
+this plugin to configure its aliases accordingly, set the following style in your `.zshrc`:
+
+```zsh
+zstyle ':omz:plugins:yarn' berry yes
+```
+
## Aliases
-| Alias | Command | Description |
-| ----- | ----------------------------------------- | ----------------------------------------------------------------------------- |
-| y | `yarn` | The Yarn command |
-| ya | `yarn add` | Install a package in dependencies (`package.json`) |
-| yad | `yarn add --dev` | Install a package in devDependencies (`package.json`) |
-| yap | `yarn add --peer` | Install a package in peerDependencies (`package.json`) |
-| yb | `yarn build` | Run the build script defined in `package.json` |
-| ycc | `yarn cache clean` | Clean yarn's global cache of packages |
-| yd | `yarn dev` | Run the dev script defined in `package.json` |
-| yf | `yarn format` | Run the dev script defined in `package.json` |
-| yga | `yarn global add` | Install packages globally on your operating system |
-| ygls | `yarn global list` | Lists global installed packages |
-| ygrm | `yarn global remove` | Remove global installed packages from your OS |
-| ygu | `yarn global upgrade` | Upgrade packages installed globally to their latest version |
-| yh | `yarn help` | Show help for a yarn command |
-| yi | `yarn init` | Interactively creates or updates a package.json file |
-| yin | `yarn install` | Install dependencies defined in `package.json` |
-| yln | `yarn lint` | Run the lint script defined in `package.json` |
-| ylnf | `yarn lint --fix` | Run the lint script defined in `package.json`to automatically fix problems |
-| yls | `yarn list` | List installed packages |
-| yout | `yarn outdated` | Check for outdated package dependencies |
-| yp | `yarn pack` | Create a compressed gzip archive of package dependencies |
-| yrm | `yarn remove` | Remove installed packages |
-| yrun | `yarn run` | Run a defined package script |
-| ys | `yarn serve` | Start the dev server |
-| yst | `yarn start` | Run the start script defined in `package.json` |
-| yt | `yarn test` | Run the test script defined in `package.json` |
-| ytc | `yarn test --coverage` | Run the test script defined in `package.json` with coverage |
-| yuc | `yarn global upgrade && yarn cache clean` | Upgrade global packages and clean yarn's global cache |
-| yui | `yarn upgrade-interactive` | Prompt for which outdated packages to upgrade |
-| yuil | `yarn upgrade-interactive --latest` | Prompt for which outdated packages to upgrade to the latest available version |
-| yup | `yarn upgrade` | Upgrade packages to their latest version |
-| yv | `yarn version` | Update the version of your package |
-| yw | `yarn workspace` | Run a command within a single workspace. |
-| yws | `yarn workspaces` | Run a command within all defined workspaces. |
-| yy | `yarn why` | Show why a package has been installed, detailing which other packages depend on it |
+- Aliases marked with `*` are only available when using Yarn v1 (non-berry)
+- Aliases marked with `b` are only available when using Yarn berry
+
+| Alias | Command | Description |
+| ------------------ | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
+| y | `yarn` | The Yarn command |
+| ya | `yarn add` | Install a package in dependencies (`package.json`) |
+| yad | `yarn add --dev` | Install a package in devDependencies (`package.json`) |
+| yap | `yarn add --peer` | Install a package in peerDependencies (`package.json`) |
+| yb | `yarn build` | Run the build script defined in `package.json` |
+| ycc | `yarn cache clean` | Clean yarn's global cache of packages |
+| yd | `yarn dev` | Run the dev script defined in `package.json` |
+| yf | `yarn format` | Run the dev script defined in `package.json` |
+| yh | `yarn help` | Show help for a yarn command |
+| yi | `yarn init` | Interactively creates or updates a package.json file |
+| yin | `yarn install` | Install dependencies defined in `package.json` |
+| yln | `yarn lint` | Run the lint script defined in `package.json` |
+| ylnf | `yarn lint --fix` | Run the lint script defined in `package.json`to automatically fix problems |
+| yp | `yarn pack` | Create a compressed gzip archive of package dependencies |
+| yrm | `yarn remove` | Remove installed packages |
+| yrun | `yarn run` | Run a defined package script |
+| ys | `yarn serve` | Start the dev server |
+| yst | `yarn start` | Run the start script defined in `package.json` |
+| yt | `yarn test` | Run the test script defined in `package.json` |
+| ytc | `yarn test --coverage` | Run the test script defined in `package.json` with coverage |
+| yui | `yarn upgrade-interactive` | Prompt for which outdated packages to upgrade |
+| yuil | `yarn upgrade-interactive --latest` (or see `yui` when using [yarn berry](#yarn-berry)) | Prompt for which outdated packages to upgrade to the latest available version |
+| yii | `yarn install --frozen-lockfile` (or `yarn install --immutable` when using [yarn berry](#yarn-berry)) | Install dependencies and abort if the lockfile was to be modified |
+| yifl | `yii` | Install dependencies and abort if the lockfile was to be modified |
+| yup | `yarn upgrade` | Upgrade packages to their latest version |
+| yv | `yarn version` | Update the version of your package |
+| yw | `yarn workspace` | Run a command within a single workspace. |
+| yws | `yarn workspaces` | Run a command within all defined workspaces. |
+| yy | `yarn why` | Show why a package has been installed, detailing which other packages depend on it |
+| yga`*` | `yarn global add` | Install packages globally on your operating system |
+| ygls`*` | `yarn global list` | Lists global installed packages |
+| ygrm`*` | `yarn global remove` | Remove global installed packages from your OS |
+| ygu`*` | `yarn global upgrade` | Upgrade packages installed globally to their latest version |
+| yls`*` | `yarn list` | List installed packages |
+| yout`*` | `yarn outdated` | Check for outdated package dependencies |
+| yuca`*` | `yarn global upgrade && yarn cache clean` | Upgrade global packages and clean yarn's global cache |
+| ydlx`b` | `yarn dlx` | Run a package in a temporary environment. |
+| yn`b` | `yarn node` | Run node with the hook already setup. |
diff --git a/plugins/yarn/yarn.plugin.zsh b/plugins/yarn/yarn.plugin.zsh
index 157044d71..b7d64770d 100644
--- a/plugins/yarn/yarn.plugin.zsh
+++ b/plugins/yarn/yarn.plugin.zsh
@@ -18,17 +18,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 +30,37 @@ 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"
alias yup="yarn upgrade"
alias yv="yarn version"
alias yw="yarn workspace"
alias yws="yarn workspaces"
alias yy="yarn why"
+
+# Commands that are specific to the yarn version being used
+if zstyle -t ':omz:plugins:yarn' berry; then
+ # aliases that differ
+ alias yuil='yui' # --latest flag was removed in yarn berry
+ alias yii='yarn install --immutable'
+ alias yifl='yarn install --immutable'
+
+ # unique aliases
+ alias ydlx="yarn dlx"
+ alias yn="yarn node"
+else
+ # aliases that differ
+ alias yuil='yarn upgrade-interactive --latest'
+ alias yii='yarn install --frozen-lockfile'
+ alias yifl='yarn install --frozen-lockfile'
+
+ # unique aliases
+ 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
+
+unset is_yarn_berry