资讯详情

资讯详情

Mac前端开发环境配置实战:Homebrew、Node与VSCode一次搞定

最近又完整走了一遍 mac 前端开发环境配置。这事情听起来不难但真到了实操环节坑比想象中多Homebrew 装到一半卡住、node 版本切来切去把系统目录搞得一团糟、VSCode 开箱即用的体验其实远没到“好用”的程度……这篇就围绕“mac 前端开发 环境配置”这三个关键词把我这次实际执行过、验证过能用的步骤全记下来。文章不打算写成面面俱到的教科书重点放在“先想清楚要什么再动手装什么”以及那些报错到底是怎么解决的。适合刚换新 Mac、或者准备从头搭前端环境的朋友直接抄作业。1. 配置前的技术栈梳理先想清楚再动手我以前装环境有个毛病看到教程就跟着敲命令结果装了一堆用不上的东西真正跑项目的时候又缺东少西。后来总结出一条经验在动手之前先把你日常开发依赖的东西列成清单。对于前端开发来说核心就三块运行时Node.js、编辑器VSCode 为主、协作工具Git/调试工具。至于其他花里胡哨的等真用到了再装。我先说我这次的目标技术栈团队项目以 Vue3 Vite TypeScript 为主部分老项目还在用 Vue2偶尔也会碰 React。这就决定了我的 Node 版本不能只装一个必须能灵活切换。所以我选择了 nvm 而不是直接下载官方 pkg 安装包。别小看这一步好多权限报错都是因为直接装了全局 node后面 npm 全局装包的时候才发现没有写权限再折腾用户目录权限非常浪费时间。另外要考虑的就是包管理器。npm 是所有工具链的默认底座这个肯定要有pnpm 现在对磁盘空间的优化很明显新项目我基本都优先用它yarn 对老项目兼容性更好也保留了但不作为默认。至于要不要装 yarn 和 pnpm 的全局版本我的建议是能用 corepack 就用 corepack后面我会说为什么。编辑器方面VSCode 目前在前端开发里的地位不用我多强调。但它默认装完只能算“能写代码”离“用得顺手”还有距离。真正花时间的不是装软件本身而是插件选型和配置文件调整。这也是我这次写这篇文章的重要原因配置环境不只是为了让代码能跑更重要的是让日常开发的效率能提上来。最后是调试侧。Chrome 的 DevTools 是前端基本功另外我又装了一款接口调试工具用来处理团队联调时的 mock 数据。这套东西看起来简单但每一步如果选错方案后续都会以各种奇怪的方式冒出来找你麻烦。2. 终端与 Homebrew把“地基”夯实的完整步骤2.1 Homebrew 安装与高频报错处理mac 上的包管理器Homebrew 目前还是首选。前端环境里很多底层工具比如 git、node如果你不用 nvm 的话、wget、nginx 之类都可以通过它来装免去手动编译的麻烦。安装命令官方是这么一行/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)但很多人第一步就卡住。常见的报错是curl: (7) Failed to connect to raw.githubusercontent.com port 443原因是这个安装脚本托管在 GitHub 的 raw 域名上国内网络访问经常不稳定。这里我不建议反复重试更推荐直接换用国内镜像站提供的安装脚本。比如中科大、清华的镜像都有同步用法很简单把安装脚本下载到本地再执行或者直接拉对应镜像的安装脚本。实测下来换镜像之后安装速度快很多而且后面brew update也不会卡。如果你是 Apple Silicon 芯片M1/M2/M3 系列装完 Homebrew 之后终端会提示你执行一段配置路径的命令。这一步千万别跳过否则下次打开终端会发现brew命令找不到echo eval $(/opt/homebrew/bin/brew shellenv) ~/.zprofile eval $(/opt/homebrew/bin/brew shellenv)Intel 芯片的 Mac 路径是/usr/local/bin/brew需要配置的环境变量略有差别。判断自己该用哪个路径很简单直接看安装完成后的提示信息。为了减少后续使用中的网络问题我在~/.zshrc里加了这样一段环境变量export HOMEBREW_NO_AUTO_UPDATE1 export HOMEBREW_BREW_GIT_REMOTEhttps://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git export HOMEBREW_CORE_GIT_REMOTEhttps://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git export HOMEBREW_BOTTLE_DOMAINhttps://mirrors.tuna.tsinghua.edu.cn/homebrew-bottlesHOMEBREW_NO_AUTO_UPDATE1的意思是装包之前不要自动执行更新省掉每次等半天的烦恼。后面三个镜像配置把 Homebrew 的仓库地址和预编译包下载地址都指向了清华镜像实测下来比默认源稳定得多。2.2 终端 Shell 环境的打磨mac 从 Catalina 开始默认 shell 就是 zsh所以环境变量一般写在~/.zshrc里。如果你之前用过 bash很容易踩一个坑明明在~/.bash_profile里配了变量新开终端却死活不生效。这是因为 zsh 根本不读那个文件。统一把配置写进~/.zshrc这是第一条规矩。我这次顺手把终端体验升级了一下搞了 oh-my-zsh 和一套主题。这不是必须的但对日常开发的幸福感提升非常明显。安装 oh-my-zsh 很简单sh -c $(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)同样可能遇到 raw 域名连不上的问题解决思路和 Homebrew 一样找国内可访问的镜像或者手动下载脚本执行。装完以后我配了几个常用的 alias放在~/.zshrcalias zshrcvim ~/.zshrc alias reloadsource ~/.zshrc alias nvnvim alias ggit还有一点容易被忽视命令行工具的自动补全。如果你用 zsh 自带补全配合brew install zsh-completions可以进一步增强。不过这个不是必须的想折腾的可以试。3. Node.js 与包管理器版本管理和安装源才是关键3.1 用 nvm 管理 Node 版本而不是直接装官方包前端项目对 Node 版本的要求差异很大比如老项目可能锁定在 Node 14/16新项目用 Node 18/20 甚至更高。如果你只装一个固定版本切换项目的成本会非常高。我强烈建议不要直接从官网下载 pkg 包而是安装 nvm 来管理。nvm 的安装方式推荐用官方脚本curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash安装完成之后脚本会自动往~/.zshrc里追加几行配置主要作用是把 nvm 加载进当前 shell。但有时因为终端缓存或者配置没有被正确追加你会遇到zsh: command not found: nvm。这时候手动在~/.zshrc里补上这段export NVM_DIR$HOME/.nvm [ -s $NVM_DIR/nvm.sh ] \. $NVM_DIR/nvm.sh然后执行source ~/.zshrc让配置生效。接下来就可以安装 Node 了nvm install --lts nvm alias default lts/*nvm alias default lts/*的作用是把默认版本指向最新的 LTS防止每次开新终端都回到 system 版本。如果你有项目需要特定版本直接nvm install 16 nvm use 16实测下来nvm 会自动去 Node 官方地址下载对应版本但国内下载二进制包有时候很慢甚至失败。好在 nvm 支持镜像环境变量在~/.zshrc里加一行export NVM_NODEJS_ORG_MIRRORhttps://npmmirror.com/mirrors/node/之后装 node 的速度会快很多。这是我这次踩过的一个大坑刚开始没配镜像光一个 node v20 的包就下了十几分钟还总断配上之后几十秒搞定。3.2 npm、pnpm、yarn 怎么选以及安装源加速Node 装好之后npm 也跟着可用了。但 npm 默认源在境外直接安装依赖会很慢。执行下面命令切换为国内镜像npm config set registry https://registry.npmmirror.com npm config get registry看到输出变成 npmmirror 的地址就说明生效了。要注意npm 换源只能解决“下载依赖包”的速度问题不能解决“某些包安装后有脚本要访问境外资源”的问题但大多数情况够用了。再看看 pnpm 和 yarn。我现在的习惯是新项目、组件库、Monorepo 项目优先用 pnpm老项目锁定了 package-lock.json老老实实用 npm碰到必须用 yarn 的仓库用 corepack 拉起来安装 pnpm 有两种常见方式。一种是全局安装npm install -g pnpm另一种是启用 Node 自带的 corepackcorepack enable corepack prepare pnpmlatest --activate我更推荐 corepack 的方式。因为 Node 官方已经把 corepack 集成进来了不需要额外全局安装而且以后要切换 pnpm 版本非常方便。不过需要注意有些 nvm 切换版本的场景下corepack 路径可能会有点乱实在搞不定就用npm install -g pnpm也不丢人。pnpm 同样需要设置镜像pnpm config set registry https://registry.npmmirror.com安装依赖时pnpm 的硬链接机制会节约大量磁盘空间。我之前在某个 Monorepo 项目里npm 安装完占用将近 5GB换成 pnpm 之后直接降到 2GB 左右启动速度和安装速度也有明显提升。4. VS Code 前端配置插件、settings 和调试快捷键一次到位4.1 必装插件清单按使用频率排序VS Code 默认能写代码但前端开发的核心体验全靠插件撑起来。我这次重装之后第一件事就是把下面这批插件装上。每个插件我都按自己的真实体验标了理由不是照搬网上的“热门榜单”。插件名用途我的使用体会Vue Language Features (Volar)Vue3 语法支持Vue2 项目用 VeturVue3 一定用 Volar两者别同时开TypeScript Vue Plugin (Volar)Vue 文件里的 TS 支持配上面那个一起装否则类型提示不完整ESLint代码规范检查配合项目的.eslintrc使用保存时自动修复Prettier - Code formatter代码格式化统一团队风格就靠它配置项一定要写进 settingsPath Intellisense路径自动补全写 import 的时候直接出提示省非常多时间Error Lens错误信息内联显示不用鼠标悬停就能看到报错详情调试体验提升巨大GitLensGit 历史与 blame看某一行代码谁改的、为什么改非常好用Live Server快速起一个本地静态服务写普通 HTML/CSS 页面时用Auto Rename Tag自动修改闭合标签写 Vue 模板的时候我的本命插件Code Spell Checker拼写检查变量名拼错了会下划线提示减少低级 bug这里有个要注意的点Volar 和 Vetur 不能同时启用。两个插件都负责 Vue 文件解析同时开着会出现语法高亮错乱、格式化冲突等等诡异问题。我现在团队项目基本都是 Vue3所以只保留 Volar 全家桶。4.2 一套可以直接用的 settings.jsonVS Code 的配置都在settings.json里你可以通过快捷键Cmd Shift P打开命令面板输入Open User Settings (JSON)直接编辑。我这次用的配置如下你可以直接抄{ editor.tabSize: 2, editor.detectIndentation: false, editor.formatOnSave: true, editor.codeActionsOnSave: { source.fixAll.eslint: true }, editor.renderWhitespace: none, editor.bracketPairColorization.enabled: true, files.eol: \n, files.trimTrailingWhitespace: true, files.insertFinalNewline: true, [javascript]: { editor.defaultFormatter: esbenp.prettier-vscode }, [typescript]: { editor.defaultFormatter: esbenp.prettier-vscode }, [vue]: { editor.defaultFormatter: esbenp.prettier-vscode }, [json]: { editor.defaultFormatter: esbenp.prettier-vscode }, [jsonc]: { editor.defaultFormatter: esbenp.prettier-vscode }, typescript.updateImportsOnFileMove.enabled: always, javascript.updateImportsOnFileMove.enabled: always }简单解释几个关键项editor.tabSize设为 2 是因为前端普遍使用 2 空格缩进formatOnSave保存时自动格式化可以避免代码风格不统一codeActionsOnSave配合 ESLint保存时自动修复可以自动处理的问题files.eol设为\n是为了减少团队里因为换行符不同导致的 git diff。updateImportsOnFileMove设为always后移动文件时 VS Code 会自动帮你更新引用的路径不用再手动逐个找。4.3 我每天都会用到的快捷键再有用的配置如果不配合好的操作习惯效率也提不上去。这里列几个我使用频率最高的快捷键Cmd P快速跳转文件写代码时基本不碰侧边栏Cmd Shift P命令面板所有操作都能搜到Cmd D选中下一个相同内容适合批量改同名变量Option Shift 下/上箭头快速复制一行这个我一天要点几十次Cmd /注释/取消注释Cmd \拆分编辑器我经常左边看组件右边看样式如果你连 git 操作都习惯在编辑器里完成可以安装 VS Code 内置的源代码管理面板配合 GitLens 已经足够日常使用。我个人还是更习惯在终端里敲 git 命令但初学阶段用图形化界面会更直观。5. Git、接口调试与局域网访问团队协作前的最后一步5.1 Git 安装与全局配置mac 系统自带 git但版本可能比较老。我用 Homebrew 重新装了一份brew install git装完后先设置全局用户信息不然 commit 的时候会报错git config --global user.name 你的名字 git config --global user.email youexample.com之后生成 SSH key 并添加到 ssh-agent这一步是做团队代码托管平台免密认证的关键ssh-keygen -t ed25519 -C youexample.com eval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519生成的公钥在~/.ssh/id_ed25519.pub里用cat查看并复制贴到代码托管平台后台的 SSH keys 设置里。以后 clone 和 push 都不需要输账号密码了。如果你用的是 HTTPS 方式 clone可以设置 macOS 的钥匙串来保存密码git config --global credential.helper osxkeychain这样第一次输入账号密码后系统会自动保存不用每次输。我还会配置一些别名来缩短常用命令git config --global alias.st status git config --global alias.co checkout git config --global alias.ci commit git config --global alias.br branch git config --global alias.lg log --oneline --graph --all --decorate其中git lg我基本每天都用可以直观看到分支树和提交历史。5.2 接口调试工具与浏览器 DevTools前端开发离不开接口调试。我现在的方案是日常联调用 Apifox 或 Postman两者功能类似选择一个用就行。Postman 是老牌工具Apifox 在 API 文档和 Mock 数据方面更贴合国内团队习惯。你自己选关键是别在电脑里装一堆重复功能的软件。浏览器方面Chrome 的 DevTools 是每个前端开发者的主战场。我建议重点掌握四个面板Network看请求状态、耗时、响应体前端排查接口问题第一站Elements直接改 DOM 和样式临时验证布局很方便Console打印日志、调试 JavaScript也看各种报错Sources打断点、单步调试复杂逻辑排查的利器另外 DevTools 里的设备模拟工具很好用。Cmd Opt I打开开发者工具再点左上角的手机图标就能模拟不同尺寸屏幕下的页面表现。配合 Network 面板里的网络限速也可以模拟弱网环境这对检查页面加载性能很有帮助。5.3 局域网访问让手机直接访问本地开发页面前端开发经常需要拿手机真机调试。Vite 项目默认跑在localhost手机没法直接访问。解决方案是在启动开发服务器时加--host参数npm run dev -- --host 0.0.0.0Vite 脚手架项目还可以在vite.config.ts里直接配置export default defineConfig({ server: { host: true, port: 5173 } })启动后终端会显示一个局域网地址比如http://192.168.1.5:5173手机连同一个 Wi-Fi 就能打开页面。这里有个坑如果你电脑开启了系统防火墙可能会拦截局域网访问需要在系统设置的防火墙里允许 Node.js 或对应端口通过。6. 高频报错排查表这些坑我基本都踩过环境配置报错是难免的我把这次遇到的高频问题按“现象-原因-解决”整理成一张排查表方便你直接对照。报错现象常见原因排查思路与解决办法安装 Homebrew 时curl: (7) Failed to connect to raw.githubusercontent.com port 443脚本位于 GitHub raw 域名网络不稳定换用国内镜像提供的安装脚本比如中科大/清华的 Homebrew 镜像或下载脚本到本地再执行执行brew install卡在Updating Homebrew...默认更新逻辑拖慢流程设置export HOMEBREW_NO_AUTO_UPDATE1并配置国内源新开终端输入node提示command not foundnvm 配置没有加载检查~/.zshrc里 nvm 的三行配置执行source ~/.zshrc后重试nvm 安装 node 一直卡住或下载超级慢Node 二进制包下载源连接慢在~/.zshrc里设置NVM_NODEJS_ORG_MIRRORhttps://npmmirror.com/mirrors/node/npm 全局安装时报EACCES: permission denied之前用 sudo 安装过全局包权限被改乱了不要用 sudo 解决改用 nvm 管理 node将全局包安装在用户目录下VSCode 终端里node正常但外部终端命令找不到zsh 配置或 PATH 未生效确认配置写入~/.zshrc而不是~/.bash_profile修改后source ~/.zshrcVue3 项目运行时语法高亮和格式化混乱Volar 和 Vetur 冲突只启用 Volar禁用 Vetur启动 dev server 后手机访问不了服务没有监听局域网地址或防火墙阻拦给 Vite 配server.host: true检查系统防火墙是否放行对应端口Homebrew 安装某个软件时显示Error: An exception occurred within a child process下载的 bottle 包损坏或依赖冲突先执行brew update brew doctor清理缓存brew cleanup后再重试git push 总要求输入账号密码未配置 SSH key 或凭据助手配置 SSH key 并添加公钥到代码托管平台或设置credential.helper osxkeychain这张表里最容易被忽视的是第一条。很多人以为 Homebrew 安装脚本下载不了是自己的操作问题反复重试浪费时间。其实直接把下载源从 GitHub 换成国内镜像一次性就能过。还有一个很隐蔽的坑mac 升级系统之后终端里原本正常的 node、pnpm 命令有时候会失效提示“无法打开因为无法验证开发者”。这通常是因为系统安全策略把之前编译过的二进制拦下来了。解决办法是在“系统设置 - 隐私与安全性”里允许对应应用运行如果还不够执行xattr -dr com.apple.quarantine /path/to/your/app这个命令会把下载来源标记去掉只推荐对你自己信任的开发工具使用不要随便在不明文件上执行。最后再分享一个让环境“可复制”的小技巧。环境配置完成后我把~/.zshrc、vscode/settings.json、以及常用的~/.gitconfig都放到一个私有 Git 仓库里管理。下次换了新电脑直接 clone 回来再装一遍软件配置就能快速恢复不用再重新回忆某个参数到底怎么写。前端开发环境这东西第一次搭总是慢的但只要你把配置沉淀下来以后就会越来越快。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →