Skip to main content

1. MacOs环境准备

软件安装及打包工具

安装软件分类

不同软件用不同工具,但不能分太细,基本就是2类(再加点其他):

  1. 非nodeJs类
  2. nodeJs类

**表 1:软件分类 → 对应「包管理器/安装器」

类别举例推荐安装渠道说明
Node-JS 生态next、eslint、ts-node、vercel-clipnpm(本地或 dlx锁版本、去重、幻影依赖清零
macOS 系统/通用 CLIgit、curl、docker、python、go、rust、fnm、llvmHomebrew官方 bottle 最快,签名完整
GUI 应用/IDEVS Code、Cursor、Android Studio、JDK、Docker DesktopHomebrew Cask 或官网 .dmg自动更新+签名,一键卸载
苹果第一方Xcode、Simulator、Command Line ToolsApp Store / xcode-select --install非 brew 管理,占空间大

可见我们的日常开发就集中在pnpm了。它的好处见我其他文档(我个人是为了节省昂贵的苹果硬盘)。

Node工具应用场景

**表 2:Node 工具「三条消费路径」——全部 pnpm 解决

场景旧习惯2025 正确姿势备注
项目依赖npm i -D eslintpnpm add -D eslint版本写进 lock,多人一致
本地常开 CLInpm i -g @vercel/cli不要全局
pnpm add -D vercel + pnpm exec vercel
随项目升级,不污染系统
一次性/尝鲜npx create-next-apppnpm dlx create-next-app临时下载、执行、自动清缓存

其他开发大件

**表 3:日常开发大件「该去哪装」速查

软件安装命令(一键)事后升级备注
VS Codebrew install --cask visual-studio-codebrew upgrade --cask插件走 VS Code 自身市场
Cursorbrew install --cask cursor同上
AI Agent CLI
(Claude-dev、github-copilot-cli)
pnpm dlx claude-dev
pnpm add -D claude-dev
项目内 pnpm update随项目锁定版本,团队一致
JDK (LTS)brew install openjdk@21brew upgradeexport PATH="/opt/homebrew/opt/openjdk@21/bin:$PATH"
Android Studiobrew install --cask android-studiobrew upgrade --caskSDK 内部自行更新
XcodeApp Store 搜索安装App Store 更新必须登录 Apple ID;CLI 工具首次打开后点安装

后续更新升级管理

1. 各工具「自我升级」标准动作

工具升级命令频率备注
Homebrewbrew update && brew upgrade && brew cleanup周/月cleanup 清旧版本,省盘
pnpmcorepack prepare pnpm@latest --activate不走 npm/yarn,保证单例
Node(brew 版)brew upgrade node自动带新 corepack
Node(nvm 版)nvm install 20 --latest-npm && nvm alias default 20老项目需 .nvmrc
pnpm 自举(备用)pnpm add -g pnpm@latest仅当 corepack 被禁用时

**补充:

场景命令说明
简单路线brew install node适合 90% 人;corepack 随赠
多版本路线nvm install 20 && nvm alias default 20需旧版本/集成测试时用
切换版本nvm use 18仅当前 shell 生效

之后暂不考虑nvm管理多版本的场景。 或者建议:主版本用 brew,临时旧版用 nvm,二者 PATH 不冲突。

2. 防止忘/防重复/防混乱

时间长了,没有好办法,只能靠记忆和原则? 要么不单独升级,用脚本统一做。

保存为 ~/bin/upgrade-all: **一键「体检」脚本

#!/usr/bin/env bash
set -e
echo "1️⃣ 更新 brew"
brew update && brew upgrade && brew cleanup
echo "2️⃣ 更新 Node(brew 版)"
brew upgrade node
echo "3️⃣ 更新 pnpm"
corepack prepare pnpm@latest --activate
echo "4️⃣ 盘点并提交记录"
brew leaves > ~/dotfiles/brew-leaves.txt
pnpm list -g --depth=0 > ~/dotfiles/pnpm-global.txt
cd ~/dotfiles && git add . && git commit -m "chore: upgrade-all $(date +%F)"
echo "✅ 完成,记录已提交"

赋权:


chmod +x ~/bin/upgrade-all

**口诀贴墙

系统软件用 brew,Node 生态 pnpm
升级 brew 后,Node 跟着走
pnpm 升最新,corepack 一句话

关于brew安装的补充知识

Ask: brew install和brew install --cask区别?

一句话区分

  • brew install → 装的是**“命令行公式(Formula)”**,源码或预编译二进制,丢进 /opt/homebrew/Cellar,再软链到 /opt/homebrew/bin给终端用
  • brew install --cask → 装的是**“macOS 应用(Cask)”**,完整 .app / .pkg / .dmg给 Finder/ Launchpad 用,通常带 GUI、签名、自动更新。

为什么 OpenJDK 不用 --cask

维度OpenJDK 现状
形态只有头文件 + 动态库 + 可执行 java/javac无 GUI,纯 CLI
分发方式Homebrew 官方维护的是 Formula openjdk@21,已预编译成 bottle
安装路径/opt/homebrew/Cellar/openjdk@21/21.0.x/bin/java → 软链到 /opt/homebrew/bin/java
用途供终端、构建工具、IDE 调用;不需要 .app 包裹

对比:Oracle JDK 提供 .dmg 安装器,那种才有第三方 Cask(oracle-jdk),但 Homebrew 核心仓库不收,需额外 tap。


速记口诀

“终端命令用 Formula,窗口图标用 Cask;
JDK 只有二进制,所以公式就搞定。”

一些安装操作

nodeJs

pnpm

VSCode + AI代码补全

Claude Code + 国产LLM