Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
6d5ba2d6
Unverified
Commit
6d5ba2d6
authored
Nov 15, 2022
by
Carlo
Committed by
GitHub
Nov 15, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(nvm)!: settings now are zstyle-based (#11335)
Co-authored-by:
Marc Cornellà
<
hello@mcornella.com
>
parent
4392d3a9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
66 additions
and
21 deletions
+66
-21
README.md
plugins/nvm/README.md
+29
-11
nvm.plugin.zsh
plugins/nvm/nvm.plugin.zsh
+37
-10
No files found.
plugins/nvm/README.md
View file @
6d5ba2d6
# nvm plugin
# nvm plugin
This plugin adds autocompletions for
[
nvm
](
https://github.com/nvm-sh/nvm
)
— a Node.js version manager.
This plugin adds autocompletions for
[
nvm
](
https://github.com/nvm-sh/nvm
)
— a Node.js version manager.
It also
It also
automatically sources nvm, so you don't need to do it manually in your
`.zshrc`
.
automatically sources nvm, so you don't need to do it manually in your
`.zshrc`
.
To use it, add
`nvm`
to the plugins array of your zshrc file:
To use it, add
`nvm`
to the plugins array of your zshrc file:
...
@@ -21,14 +21,32 @@ These settings should go in your zshrc file, before Oh My Zsh is sourced:
...
@@ -21,14 +21,32 @@ These settings should go in your zshrc file, before Oh My Zsh is sourced:
[
Homebrew is installed in `/opt/homebrew`
](
https://docs.brew.sh/Installation
)
. To get the directory where
[
Homebrew is installed in `/opt/homebrew`
](
https://docs.brew.sh/Installation
)
. To get the directory where
nvm has been installed, regardless of chip architecture, use
`NVM_HOMEBREW=$(brew --prefix nvm)`
.
nvm has been installed, regardless of chip architecture, use
`NVM_HOMEBREW=$(brew --prefix nvm)`
.
-
**`NVM_LAZY`**
: if you want the plugin to defer the load of nvm to speed-up the start of your zsh session,
## Customization
set
`NVM_LAZY`
to
`1`
. This will source nvm script only when using it, and will create a function for
`node`
,
`npm`
,
`pnpm`
,
`yarn`
, and the command(s) specified by
`NVM_LAZY_CMD`
, so when you call either of them,
nvm will be loaded and run with default version.
-
**`NVM_LAZY_CMD`**
: if you want additional command(s) to trigger lazy loading of nvm, set
`NVM_LAZY_CMD`
to
#### Lazy startup
the command or an array of the commands.
-
**`NVM_AUTOLOAD`**
: if
`NVM_AUTOLOAD`
is set to
`1`
, the plugin will automatically load a node version when
This option will help you to defer nvm's load until you use it to speed-up your zsh startup. This will source
if finds a
[
`.nvmrc` file
](
https://github.com/nvm-sh/nvm#nvmrc
)
in the current working directory indicating
nvm script only when using it, and will create a function for
`node`
,
`npm`
,
`pnpm`
,
`yarn`
, and the
which node version to load.
command(s) specified by
`lazy-cmd`
option, so when you call either of them, nvm will be loaded and run with
default version. To enable it, you can add this snippet to your zshrc, before Oh My Zsh is sourced:
```
zsh
zstyle
':omz:plugins:nvm'
lazy
yes
```
Then, to define extra commands that will also trigger nvm load, you can use a similar syntax, adding as many
as you want:
```
zsh
zstyle
':omz:plugins:nvm'
lazy-cmd eslint prettier typescript ...
```
#### `.nvmrc` autoload
If set, the plugin will automatically load a node version when if finds a
[
`.nvmrc` file
](
https://github.com/nvm-sh/nvm#nvmrc
)
in the current working directory indicating which node
version to load. This can be done, similar as previous options, adding:
```
zsh
zstyle
':omz:plugins:nvm'
autoload
true
```
plugins/nvm/nvm.plugin.zsh
View file @
6d5ba2d6
...
@@ -16,14 +16,41 @@ fi
...
@@ -16,14 +16,41 @@ fi
# Note: nvm is a function so we need to use `which`
# Note: nvm is a function so we need to use `which`
which nvm &>/dev/null
&&
return
which nvm &>/dev/null
&&
return
if
((
$+
NVM_LAZY
))
;
then
# TODO: 2022-11-11: Remove soft-deprecate options
# Call nvm when first using nvm, node, npm, pnpm, yarn or $NVM_LAZY_CMD
if
((
${
+NVM_LAZY
}
+
${
+NVM_LAZY_CMD
}
+
${
+NVM_AUTOLOAD
}
))
;
then
function
nvm node npm pnpm yarn
$NVM_LAZY_CMD
{
# Get list of NVM_* variable settings defined
unfunction nvm node npm pnpm yarn
$NVM_LAZY_CMD
local
-a
used_vars
# Load nvm if it exists in $NVM_DIR
used_vars
=(
${
(o)parameters[(I)NVM_(AUTOLOAD|LAZY|LAZY_CMD)]
}
)
[[
-f
"
$NVM_DIR
/nvm.sh"
]]
&&
source
"
$NVM_DIR
/nvm.sh"
# Nicely print the list in the style `var1, var2 and var3`
"
$0
"
"
$@
"
echo
"
${
fg
[yellow]
}
[nvm plugin] Variable-style settings are deprecated. Instead of
${
(j
:,
:
)used_vars[1,-2]
}${
used_vars
[-2]+ and
}${
used_vars
[-1]
}
, use:
\n
"
}
if
((
$+
NVM_AUTOLOAD
))
;
then
echo
" zstyle ':omz:plugins:nvm' autoload true"
zstyle
':omz:plugins:nvm'
autoload
yes
fi
if
((
$+
NVM_LAZY
))
;
then
echo
" zstyle ':omz:plugins:nvm' lazy true"
zstyle
':omz:plugins:nvm'
lazy
yes
fi
if
((
$+
NVM_LAZY_CMD
))
;
then
echo
" zstyle ':omz:plugins:nvm' lazy-cmd
$NVM_LAZY_CMD
"
zstyle
':omz:plugins:nvm'
lazy-cmd
$NVM_LAZY_CMD
fi
echo
"
$reset_color
"
unset
used_vars NVM_AUTOLOAD NVM_LAZY NVM_LAZY_CMD
fi
if
zstyle
-t
':omz:plugins:nvm'
lazy
;
then
# Call nvm when first using nvm, node, npm, pnpm, yarn or other commands in lazy-cmd
zstyle
-a
':omz:plugins:nvm'
lazy-cmd nvm_lazy_cmd
eval
"
function nvm node npm pnpm yarn
$nvm_lazy_cmd
{
unfunction nvm node npm pnpm yarn
$nvm_lazy_cmd
# Load nvm if it exists in
\$
NVM_DIR
[[ -f
\"\$
NVM_DIR/nvm.sh
\"
]] && source
\"\$
NVM_DIR/nvm.sh
\"
\"\$
0
\"
\"\$
@
\"
}
"
unset
nvm_lazy_cmd
elif
[[
-f
"
$NVM_DIR
/nvm.sh"
]]
;
then
elif
[[
-f
"
$NVM_DIR
/nvm.sh"
]]
;
then
# Load nvm if it exists in $NVM_DIR
# Load nvm if it exists in $NVM_DIR
source
"
$NVM_DIR
/nvm.sh"
source
"
$NVM_DIR
/nvm.sh"
...
@@ -33,7 +60,7 @@ fi
...
@@ -33,7 +60,7 @@ fi
# Autoload nvm when finding a .nvmrc file in the current directory
# Autoload nvm when finding a .nvmrc file in the current directory
# Adapted from: https://github.com/nvm-sh/nvm#zsh
# Adapted from: https://github.com/nvm-sh/nvm#zsh
if
((
$+
NVM_AUTOLOAD
))
;
then
if
zstyle
-t
':omz:plugins:nvm'
autoload
;
then
load-nvmrc
()
{
load-nvmrc
()
{
local
node_version
=
"
$(
nvm version
)
"
local
node_version
=
"
$(
nvm version
)
"
local
nvmrc_path
=
"
$(
nvm_find_nvmrc
)
"
local
nvmrc_path
=
"
$(
nvm_find_nvmrc
)
"
...
@@ -70,4 +97,4 @@ for nvm_completion in "$NVM_DIR/bash_completion" "$NVM_HOMEBREW/etc/bash_complet
...
@@ -70,4 +97,4 @@ for nvm_completion in "$NVM_DIR/bash_completion" "$NVM_HOMEBREW/etc/bash_complet
fi
fi
done
done
unset
NVM_HOMEBREW
NVM_LAZY NVM_AUTOLOAD
nvm_completion
unset
NVM_HOMEBREW nvm_completion
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment