Created
August 27, 2025 04:36
-
-
Save Wxh16144/1dcfdeedaa7bb556b184bc97fa9f690f to your computer and use it in GitHub Desktop.
清理 nvm 已安装 Node.js 版本,只保留每个 major 版本的最新版本(macOS bash)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # nvm-clean-major: 清理 nvm 已安装 Node.js 版本,只保留每个 major 版本的最新版本 | |
| # 仅在 macOS + bash 环境下测试通过 | |
| RED="\033[31;1m" | |
| GREEN="\033[32;1m" | |
| YELLOW="\033[33;1m" | |
| RESET="\033[0m" | |
| function clean_nvm_versions() { | |
| # 获取所有已安装的 Node.js 版本 | |
| local versions=($(nvm ls --no-colors | awk '/^ *v[0-9]+\.[0-9]+\.[0-9]+/ {gsub(/^ +/, "", $1); print $1}')) | |
| # 按 major 分组,只保留每组最新的 | |
| declare -A latest_versions | |
| for v in "${versions[@]}"; do | |
| major=$(echo $v | cut -d. -f1 | tr -d 'v') | |
| latest_versions[$major]=$v | |
| done | |
| # 需要删除的版本 | |
| to_delete=() | |
| for v in "${versions[@]}"; do | |
| major=$(echo $v | cut -d. -f1 | tr -d 'v') | |
| if [[ $v != ${latest_versions[$major]} ]]; then | |
| to_delete+=("$v") | |
| fi | |
| done | |
| # 打印所有版本,红色为待删除,绿色为保留 | |
| for v in "${versions[@]}"; do | |
| major=$(echo $v | cut -d. -f1 | tr -d 'v') | |
| if [[ $v != ${latest_versions[$major]} ]]; then | |
| echo -e "${RED}$v (delete)${RESET}" | |
| else | |
| echo -e "${GREEN}$v (keep)${RESET}" | |
| fi | |
| done | |
| if (( ${#to_delete[@]} > 0 )); then | |
| echo -en "${YELLOW}Do you want to delete the red versions above? [y/N]: ${RESET}" | |
| read -r answer | |
| if [[ "$answer" =~ ^[Yy]$ ]]; then | |
| for v in "${to_delete[@]}"; do | |
| echo -e "${YELLOW}Uninstalling $v ...${RESET}" | |
| nvm uninstall $v | |
| done | |
| echo -e "${GREEN}Done.${RESET}" | |
| else | |
| echo -e "${RED}Aborted. No versions deleted.${RESET}" | |
| fi | |
| else | |
| echo -e "${YELLOW}No versions to delete.${RESET}" | |
| fi | |
| } | |
| # 用法:source nvm.sh 后执行 clean_nvm_versions |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
nvm-clean-major.sh
similar: nvm-sh/nvm#1195
before
process
result / after