feat(zsh): create nvmrc plugin
Custom plugin to check the .nvmrc file. When entering a directory, it checks to see if you have the desired node version installed for the current project. If it is, it will use it automatically, if not, then it will ask you if you want to install it. After, it will install all the JS developer tools for that version of NodeJS. This is a different implementation than the default oh-my-zsh version. The main difference is that it will not reset the node version when leaving a directory. It will only preform an action if there is a `.nvmrc` file in the current directory. It will not even use the `nvm_find_nvmrc` command because any interaction with nvm make the stranded `cd` command extremely sluggish.
This commit is contained in:
parent
cc49f5339e
commit
456c7dfd73
1 changed files with 44 additions and 0 deletions
44
site-modules/core/files/oh-my-zsh/custom/nvmrc.zsh
Normal file
44
site-modules/core/files/oh-my-zsh/custom/nvmrc.zsh
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/zsh
|
||||
#
|
||||
# Custom plugin to check the .nvmrc file. When entering a directory, it checks
|
||||
# to see if you have the desired node version installed for the current
|
||||
# project. If it is, it will use it automatically, if not, then it will ask you
|
||||
# if you want to install it. After, it will install all the JS developer tools
|
||||
# for that version of NodeJS.
|
||||
#
|
||||
# This is a different implementation than the default oh-my-zsh version. The
|
||||
# main difference is that it will not reset the node version when leaving a
|
||||
# directory. It will only preform an action if there is a `.nvmrc` file in the
|
||||
# current directory. It will not even use the `nvm_find_nvmrc` command because
|
||||
# any interaction with nvm make the stranded `cd` command extremely sluggish.
|
||||
|
||||
maybe_nvm_install() {
|
||||
local version="$1"
|
||||
|
||||
if read -q "do?Node version ${version} is not installed, would you like to install it? (Y/N) "; then
|
||||
echo ""
|
||||
nvm install "${version}"
|
||||
|
||||
echo "Installing all of the JS developer tools for this version of node with npm"
|
||||
npm install -g yarn typescript-language-server typescript emmet-ls cspell vscode-langservers-extracted prettier jsdoc eslint
|
||||
fi
|
||||
}
|
||||
|
||||
load_nvmrc() {
|
||||
local nvmrc_path=".nvmrc"
|
||||
|
||||
if [[ -f "$nvmrc_path" ]]; then
|
||||
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
|
||||
|
||||
if [[ "$nvmrc_node_version" = "N/A" ]]; then
|
||||
maybe_nvm_install "$(cat "${nvmrc_path}")"
|
||||
else
|
||||
nvm use > /dev/null
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook chpwd load_nvmrc
|
||||
|
||||
load_nvmrc
|
||||
Loading…
Reference in a new issue