feat(yarn): add setting to disable adding global dir to `$PATH` (#10642)
Diff
1diff --git a/plugins/yarn/README.md b/plugins/yarn/README.md
2index 9a0d1708df7db00812848fb7cefcfd0263087704..9c16ff2c3f3d24bc5491d2a91bc40ee4a6803f33 100644
3--- a/plugins/yarn/README.md
4+++ b/plugins/yarn/README.md
5@@ -9,6 +9,15 @@ To use it, add `yarn` to the plugins array in your zshrc file:
6 plugins=(... yarn)
7 ```
8 9+## Global scripts directory
10+
11+It also adds `yarn` global scripts dir (commonly `~/.yarn/bin`) to the `$PATH`.
12+To disable this feature, set the following style in your `.zshrc`:
13+
14+```zsh
15+zstyle ':omz:plugins:yarn' global-path false
16+```
17+
18 ## Aliases
1920 | Alias | Command | Description |
21diff --git a/plugins/yarn/yarn.plugin.zsh b/plugins/yarn/yarn.plugin.zsh
22index 9ba24420ad3be706e97465ccb96eb368931fa842..bcb8661cf1e2423e2bcbddc2af11defd49850cdb 100644
23--- a/plugins/yarn/yarn.plugin.zsh
24+++ b/plugins/yarn/yarn.plugin.zsh
25@@ -1,12 +1,14 @@
26-# Skip yarn call if default global bin dir exists
27-[[ -d "$HOME/.yarn/bin" ]] && bindir="$HOME/.yarn/bin" || bindir="$(yarn global bin 2>/dev/null)"
28+if zstyle -T ':omz:plugins:yarn' global-path; then
29+ # Skip yarn call if default global bin dir exists
30+ [[ -d "$HOME/.yarn/bin" ]] && bindir="$HOME/.yarn/bin" || bindir="$(yarn global bin 2>/dev/null)"
3132-# Add yarn bin directory to $PATH if it exists and not already in $PATH
33-[[ $? -eq 0 ]] \
34- && [[ -d "$bindir" ]] \
35- && (( ! ${path[(Ie)$bindir]} )) \
36- && path+=("$bindir")
37-unset bindir
38+ # Add yarn bin directory to $PATH if it exists and not already in $PATH
39+ [[ $? -eq 0 ]] \
40+ && [[ -d "$bindir" ]] \
41+ && (( ! ${path[(Ie)$bindir]} )) \
42+ && path+=("$bindir")
43+ unset bindir
44+fi
4546 alias y="yarn"
47 alias ya="yarn add"