nodejs nvm for macos

This commit is contained in:
2026-03-29 00:36:48 +08:00
parent 7112296339
commit a167f2f393

View File

@@ -1,27 +1,66 @@
#!/usr/bin/env bash
##makedesc: Install nodejs + npm via nvm
echo
echo "==============================================="
echo "Installing nodejs..."
echo "==============================================="
echo
isMac() { uname -s | grep -q "Darwin"; }
isLinux() { uname -s | grep -q "Linux"; }
installed() {
command -v "$1" >/dev/null 2>&1
install() {
echo
echo "==============================================="
echo "Installing nodejs + nvm..."
echo "==============================================="
echo
if isMac; then
brew install nvm
elif isLinux; then
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
else
echo "This OS is not supported yet!"
exit
fi
nvm install-latest-npm
nvm install node
nvm use node
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && source "$NVM_DIR/bash_completion"
cat << EOF >> "$HOME/.profile"
# nvm (not nvim!)
export NVM_DIR="\$HOME/.nvm" # nvim_autoinstalled
[ -s "\$NVM_DIR/nvm.sh" ] && source "\$NVM_DIR/nvm.sh" # nvim_autoinstalled
[ -s "\$NVM_DIR/bash_completion" ] && source "\$NVM_DIR/bash_completion" # nvim_autoinstalled
EOF
echo
echo "Finish!"
echo
nvm current
nvm ls
}
installed "nvm" && sudo apt install -y --autoremove nodejs npm nvm
remove() {
echo
echo "==============================================="
echo "Removing nodejs + nvm..."
echo "==============================================="
echo
! installed "nvm" && wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
nvm unload
rm -rf "$NVM_DIR"
# sed -i "/NVM_DIR[=\].+/d" "$HOME/.profile"
brew uninstall nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
echo
echo "Finish!"
echo
}
nvm install-latest-npm
nvm install node
nvm use node
echo "Finish!"
nvm current
nvm ls
case "$1" in
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac