setup-pnpm.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/bash
  2. # 下载并安装 nvm:
  3. # 检查 nvm 是否已安装(通过检查 nvm.sh 文件是否存在)
  4. echo ""
  5. if [ -f "$HOME/.nvm/nvm.sh" ]; then
  6. echo "✅ nvm 已安装"
  7. # 加载 nvm 环境变量
  8. \. "$HOME/.nvm/nvm.sh"
  9. # 验证 nvm 是否可用
  10. if type nvm >/dev/null 2>&1; then
  11. echo "📊 版本:$(nvm --version)"
  12. else
  13. echo "⚠️ nvm 文件存在但无法加载"
  14. fi
  15. else
  16. echo "📥 开始安装 nvm..."
  17. # 下载并安装 nvm
  18. if ! curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash; then
  19. echo "❌ nvm 下载失败"
  20. exit 1
  21. fi
  22. # 加载 nvm 环境变量
  23. if [ -f "$HOME/.nvm/nvm.sh" ]; then
  24. \. "$HOME/.nvm/nvm.sh"
  25. else
  26. echo "❌ nvm 安装文件未找到"
  27. exit 1
  28. fi
  29. # 验证 nvm 安装是否成功
  30. if type nvm >/dev/null 2>&1; then
  31. echo "✅ nvm 安装成功"
  32. echo "📊 版本:$(nvm --version)"
  33. else
  34. echo "❌ nvm 安装失败"
  35. exit 1
  36. fi
  37. fi
  38. echo ""
  39. echo ""
  40. # 下载并安装 Node.js:
  41. if command -v node >/dev/null 2>&1; then
  42. echo "✅ Node.js 已安装"
  43. echo "📊 版本:$(node --version)"
  44. else
  45. echo "📥 开始安装 Node.js..."
  46. # 使用 nvm 安装 Node.js
  47. if ! nvm install 24; then
  48. echo "❌ Node.js 安装失败"
  49. exit 1
  50. fi
  51. # 设置默认 Node.js 版本
  52. if ! nvm use 24; then
  53. echo "❌ 设置 Node.js 版本失败"
  54. exit 1
  55. fi
  56. # 验证 Node.js 安装是否成功
  57. if command -v node >/dev/null 2>&1; then
  58. echo "✅ Node.js 安装成功"
  59. echo "📊 版本:$(node --version)"
  60. else
  61. echo "❌ Node.js 安装失败"
  62. exit 1
  63. fi
  64. fi
  65. echo ""
  66. echo ""
  67. # 下载并安装 pnpm:
  68. if command -v pnpm >/dev/null 2>&1; then
  69. echo "✅ pnpm 已安装"
  70. echo "📊 版本:$(pnpm --version)"
  71. else
  72. echo "📥 开始安装 pnpm..."
  73. # 方式一:使用 corepack 启用 pnpm(Node.js 内置方式)
  74. export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
  75. if corepack enable pnpm 2>/dev/null; then
  76. echo "✅ corepack 方式安装成功"
  77. else
  78. echo "⚠️ corepack 方式失败(Node.js TLS 兼容性问题),回退到 npm 安装..."
  79. # 方式二:使用 npm 安装(npm 使用独立的 HTTP 栈,更稳定)
  80. if ! npm install -g --force pnpm; then
  81. echo "❌ pnpm 安装失败(corepack 和 npm 方式均失败)"
  82. exit 1
  83. fi
  84. fi
  85. # 验证 pnpm 安装是否成功
  86. if command -v pnpm >/dev/null 2>&1; then
  87. echo "✅ pnpm 安装成功"
  88. echo "📊 版本:$(pnpm --version)"
  89. else
  90. echo "❌ pnpm 安装失败"
  91. exit 1
  92. fi
  93. fi
  94. echo ""