程序员的 macOS 系列:Mac 开发环境配置
1、前言
最近在写《程序员的macOS系列》文章,之前写的第一篇 [程序员的macOS系列:精选Mac App](https://ihtcboy.com/2018/07/15/2018-07-15_程序员的macOS系列:精选MacApp/),大家都希望楼主尽快更新,结果拖到了2个月后,所以今天终于更新啦!其实macOS开发环境,系统默认自带ruby、php、python2、gcc、g++、bash等环境,并且因为macOS
是以Unix
为基础,所以有传统Unix/Linux
的特性,很适合高效少折腾的开发者。所以,本文主要讲解一些通用开发环境配置,主要是以必须和提高效率为主!也没有什么高深介绍,当然,由于楼主目前主职是iOS,所以其它的开发环境接触不多(谦虚),当前大家要学以至用,环境搭建都是相似的,熟悉了就不是问题。文章短短不可能详尽也,要学好每一个点也不是那么简单,惟有抛砖引玉,希望大家努力提高!
[程序员的macOS系列:精选Mac App](https://ihtcboy.com/2018/07/15/2018-07-15_程序员的macOS系列:精选MacApp/)
[程序员的macOS系列:Mac开发环境配置](https://ihtcboy.com/2018/09/30/2018-09-30_程序员的macOS系列:Mac开发环境配置/)
[程序员的macOS系列:高效Alfred进阶](https://ihtcboy.com/2020/02/09/2020-02-09_程序员的macOS系列:高效Alfred进阶/)
目前计划写《程序员的macOS系列》三篇已经完成 ✅,后续有想法在更新吧~
<!--more-->
2、开发环境配置
需要提前说明一下,本文不使用代理源,如果命令无效,大家记得翻墙一下啊。本教程尽量都通过命令行方式完成配置,命令行依然是程序员最高效的环境!如果是通过软件包安装的方式,就不在这里列举了,比如Java
的安装可以自行搜索~
Homebrew
Homebrew
是强大的终端工具,用来管理很多在终端下操作的程序以及软件包的依赖,对于经常需要使用终端应用的程序员来说,是必不可少的第一步!
打开终端,安装命令:
上面命令,我希望大家不只是复制粘贴运行就完事,更希望大家能了解更多:
/usr/bin/ruby -e
:使用ruby环境运行curl -fsSL
:使用curl命令下载
了解了这2点,那么ruby
环境、curl
命令和参数的作用,相信大家就可以自行搜索深入学习,而不是片面过一次复制粘贴运行
,达到学以致用,这才是真学习
!
brew
一些常用命令:
brew
命令就不多说了,类似linux系统下的apt-get
,程序员都要从入门到精通啊~
命令行工具(Command Line Tools)
如果不是开发 iOS
或 macOS
可能就没有必要安装Xcode,但是可能需要安装一下Xcode 命令行工具,因为很多环境和软件都会使用到和依赖它(下面说到的Carthage
、python3
就依赖它)。
xcode-select
这个命令还可以切换 xcode build 的版本(目录),可以 xcode-select --help
查看更多。
这里提醒一下新手,终端的命令,如果记得命令名字,不记得用法,可以使用:
也可以用:
--help
和 man
命令的区别,是man
命令是详细全面的介绍。
Bash(Zsh)
zsh是一种shell
语言,兼容bash
,提供强大的命令行功能,比如tab补全,自动纠错功能等。
安装 zsh
:
使用 oh-my-zsh
可以将zsh变得更加强大而灵巧:
另外可以安装 oh-my-zsh 一些插件,比如实现自动跳转:[autojump](https://github.com/joelthelion/autojump)、[fasd](https://github.com/clvv/fasd)、命令行自动提示[zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions)
个性化配置,包括别名,都在目录 ~/.zshrc
下,需要深入教程的大家自动网上搜索啊。这里只是配置入门,修行还是看个人啊!
创建别名的示例:
Node/npm
Node(Node.js)
是一个基于Chrome V8 引擎、能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript 运行环境。Node.js
使用了一个事件驱动、非阻塞式I/O 的模型,使其轻量又高效。
安装 Node 后,也会自动安装npm
工具。npm
即 node package manager,用来搜索、下载、管理 Node.js 相关的套件。
npm
一些常用命令:
Node
除了用于前端/后台开发外,react native
、Hexo
博客也是依赖 Node
环境,更多的 Node
知识,我也还在努力学习中,后续有新认识,再回来更新啊!就不误人子弟啦~
vi(vim)
vi
是 visual interface
的缩写,vim
是 vi IMproved
(增强版的vi)。vi(vim) 命令繁多,但是如果灵活使用之后将会大大提高效率!从此不用鼠标不是梦!
vi(vim)是 Unix/Linux 终端自带的,所以 macOS 也自带。那么 vi(vim) 要配置什么呢?
就是大家觉得 vi(vim) 好用,但是,还认为可以更好用,所以,有很多的插件(用更少的按键,实现更多更合理的功能),例如实现文件浏览([NERD Tree](https://github.com/scrooloose/nerdtree)),代码补全([YouCompleteMe](https://github.com/Valloric/YouCompleteMe)),语法检查([syntastic](https://github.com/vim-syntastic/syntastic)),文件模糊搜索([ctrlp](https://github.com/kien/ctrlp.vim)),显示vim状态栏([Vim Powerline](https://github.com/Lokaltog/vim-powerline)),主题颜色([Molokai](https://github.com/tomasr/molokai)),显示文件结构([tagbar](https://github.com/majutsushi/tagbar))等多种功能
vi(vim) 操作的快捷键教程可以参考楼主之前的文章:[vi(vim)快捷键小记](https://ihtcboy.com/2018/07/28/2018-07-28_Vim快捷键小记/)
vim 设置编辑文本语法高亮:
更多vi的知识,大家自行搜索学习啊~
Git
git
的作用就不多说了,如果是刚毕业的新手入门,建议自行学习,对你的开发帮助一定非常大~
另外,如果安装了Xcode,默认会安装git
,如果没有安装Xcode,可以自己安装:
git
安装:
git
基本配置:
用户的git配置文件目录: ~/.gitconfig
[tig](https://github.com/jonas/tig) 高亮美化, 让 git 命令行可视化
git
更多命令教程,大家自行搜索,如果要达到熟悉,还是要多实践练习啊~ 当然,原理也是必不可少的一步!
python3
python3 是未来,所以还是要安装使用和开发的!
查看 python3
的版本:
python
能做的事件就不多说了,人工智能,机器学习,大数据分析,爬虫,web,可以说python
已经渗透到各个地方~
jenkins
暂时留存,日后回来写
CocoaPods
CocoaPods
是iOS的包管理工具之一,类似于 java 的Maven
、Node.js 的 npm
、Python 的 pip
、PHP 的 Composer
、Ruby 的 gem
。
CocoaPods
基于Ruby
开发的,因此安装CocoaPods
前需要先安装Ruby
环境。而前面提到macOS系统默认自带Ruby环境! 所以,直接用 Ruby 的 gem
环境安装吧~
1.安装命令:
2.配置CocoaPods
环境,安装Specs
库,由于库很大(几百MB),需要一些时间和网速:
pod
一些常用命令:
更多使用说明,自行搜索啊~
Carthage
我们使用包管理,就是为了集成第三方库的时候更加方便,迅速。有时候iOS包管理工具 CocoaPods
处理因包管理而导致的错误又浪费了我们很多时间。而 Carthage
使用的是一种非侵入性的哲学,Carthage
不会对我们的项目结构进行任何修改,更不多创建 workspace
。它只是根据我们描述文件中配置的第三方库,将它们下载到本地,然后使用 xcodebuild
构建成 framework
文件。
另外 Carthage
除了非侵入性,它还是去中心化的,它的包管理不像 CocoaPods
那样,有一个中心服务器(cocoapods.org),来管理各个包的元信息,而是依赖于每个第三方库自己的源地址,比如 Github
。
安装:
carthage
一些常用命令:
更多使用说明,自行搜索啊~
包管理工具
| Package client | Language | Package format | Description |
|---|---|---|---|
| npm | JavaScript | package.json | Node package manager |
| gem | Ruby | Gemfile | RubyGems package manager |
| mvn | Java | pom.xml | Apache Maven project management and comprehension tool |
| gradle | Java | build.gradle
or build.gradle.kts
| Gradle build automation tool for Java |
| docker | N/A | Dockerfile | Docker container management platform |
| nuget | .NET | nupkg | NuGet package management for .NET |
| pip | Python | requirements.txt | Python package manager |
| Composer | PHP | composer.json | PHP package manager |
| pod | ObjC/Swift | Podfile | Cocoa application package manager |
| carthage | ObjC/Swift | Cartfile | Cocoa app package manager |
参考:[About GitHub Packages](https://help.github.com/en/github/managing-packages-with-github-packages/about-github-packages#supported-clients-and-formats)
3、其它环境配置和插件
Finder(访达)预览插件
用于Finder
快速显示文件的内容,这个 GitHub 专门收集了特别的Finder
插件:
https://github.com/sindresorhus/quick-look-plugins
安装命令:
其中特别的插件说明,详细看[quick-look-plugins](https://github.com/sindresorhus/quick-look-plugins):
qlcolorcode: 代码文件预览时高亮
qlstephen: 以纯文本的形式预览无拓展名或者未知拓展名的文件
qlmarkdown: 预览渲染后的 markdown 文件
quicklook-json: 预览格式化后的 json 文件
ProvisionQL: ipa文件信息展示
QuickLookAPK:apk文件信息展示
用图片来说明一下作用,一看就懂:
QuickLookJSON:
![](https://github.com/sindresorhus/quick-look-plugins/raw/master/screenshots/QuickLookJSON.png)
QLMarkdown:
![QLMarkdown.png](https://github.com/sindresorhus/quick-look-plugins/raw/master/screenshots/QLMarkdown.png)
ProvisionQL:
![](https://github.com/sindresorhus/quick-look-plugins/raw/master/screenshots/ProvisionQL.png)
QuickLookAPK:
![QuickLookAPK.png](https://github.com/sindresorhus/quick-look-plugins/raw/master/screenshots/QuickLookAPK.png)
Hexo 博客
具体hexo
使用,可能参考之前的文章:[Hexo搭建Github Pages博客填坑教程](https://ihtcboy.com/2015/09/06/2015_Hexo搭建Github-Pages博客填坑教程/)
建议每一个技术人员都搭建自己一个博客,依靠GitHub
、oschina
或Coding.net
提供的免费服务,完全没问题,如果需要自己的域名,购买一个域名也就几百元就10年啦。程序员要多总结。比如你学习了一个技术或做了一个项目,没有一点记录,没有一点总结,没有一点思考,那么你能有收获吗???
Safari Extensions
Safari 浏览器的插件
[Apple - Safari - Safari Extensions Gallery](https://safari-extensions.apple.com)
为什么会用Safari
? 不推荐 Google Chrome
? 一定很多人有这样的疑问,其实, Safari
作为官方浏览器,就像Windows
的 IE
/Edge
一样,自己的儿子,一定更好用。我认为有2点吧,
1.Safari 可以完美同步打开的页面、书签、历史到其它
macOS/iOS
设备,无缝的。2.Safari 的兼容性和性能,确实是比其它的要好,不管你认不认同-。-。(虽然前端页面兼容开发工程师会踩坑多~)
我这里就推荐几个常用的:
[Translate](https://safari-extensions.apple.com/details/?id=com.sidetree.Translate-S64NDGV2C5)
[Evernote Web Clipper](https://safari-extensions.apple.com/details/?id=com.evernote.safari.clipper-Q79WDW8YH9)
[webQR](https://safari-extensions.apple.com/details/?id=com.breadfm.webqr-2LGL679YYN)
[Search Alias](https://safari-extensions.apple.com/details/?id=com.damiancarrillo.search-alias-RADJYLEN7P)
[Awesome Screenshot](https://safari-extensions.apple.com/details/?id=com.diigo.safari.awesomescreenshot-5DXNM3K2CT)
另外,macOS 10.14 后,苹果 Safari 浏览器不再支持不安全的扩展。只可以在 App Store 或 Safari 浏览器扩展库中查找经过 Apple 审核的更新扩展。
Finder 访达
很多人可能跟我一样,不喜欢用第三方的文件管理应用,一般苹果自带能用的,我都不会使用第三方,一方便迁移成本高,另一方面系统自带的稳定性和内存占用都是做的较好。
对我来说,经常的痛点是,没有绝对路径显示!!!在 macOS 系统,可以通过 option + command + P
在Finder底部显示完整的当前路径和跳转。其它,还有一个骚操作,就是显示在标题栏:
在 Finder 标题栏显示完整路径
还原
效果如下:
![20180930-Finder-Path.png](https://github.com/iHTCboy/iGallery/raw/master/BlogImages/2018/09/20180930-Finder-Path.png)
报错:无法打开已损坏的安装包
遇到打开自己下载的安装包失败时,可执行下面命令解决:
macOS 10.14 后,苹果对安全和隐私保护这一块更加严厉,当然,事件有好的一面,也有不好(不方便)的一面,大家智者见智,我一般是把这个命令当成别名:
这里在终端输入 macss
就可以啦~
macOS Catalina 10.15 第三方软件文件提示已损坏解决办法
macOS 10.15 后,苹果加强了对第三方渠道下载软件的证书校验,对于无证书的应用,不允许打开。可以试试使用下面命令:
终端命令
在终端和vim下,程序员的效率一定提升不少,但对于新手,下面也列出一些重要的终端命令,方便大家重点掌握,更多就大家自动搜索了:
| 命令 | 作用 |
| --- | --- |
| say xxx | 读单词 |
| pwd | 显示当前目录的路径名 |
| ls | 查看当前目录下的文件 |
| ls -al | 查看所有文件,包含隐藏文件 |
| clear | 清除屏幕或窗口内容 |
| cd /xx/yy | 跳转到目录/xx/yy |
| cd .. | 返回上一级目录 |
| cd / | 返回根目录 |
| cd - | 返回到上一步操作目录 |
| cat xx | 查看xx文件的内容 |
| man xx | 查看命令的详细帮助,比如 mac ls |
| killall Finder | 重启Finder |
| touch xxx | 创建xxx文件 |
| mkdir xxx | 创建xxx文件夹 |
| rm xxx | 删除文件 |
| rm -rf xxxx | 删除文件夹 |
| defaults write com.apple.finder AppleShowAllFiles TRUE <br>killall Finder | 查看隐藏文件 |
| defaults write com.apple.finder AppleShowAllFiles FALSE <br>killall Finder | 隐藏文件 |
| ↑ ↓ | 读取上一条或者下一条的命令记录 |
| sudo vi /private/etc/hosts | 编辑hosts文件 |
还有非常多命令,大家可以自行搜索,比如
[ccat](https://github.com/jingweno/ccat) 高亮 cat 内容
总结
macOS的开发环境大概就讲到这些,如果大家还有不清楚的,网上搜索已经一大片,这里只是总结和归纳一下,让大家有一个系统性的了解和学习,只有大家系统性的全面了解,才能深入每一个知识点学习。这也是本文的目的,授于鱼,不如授于渔,希望大家努力学习~
楼主目前接触前端H5和后台开发时间不长,暂时不知道它们需要在macOS配置一些什么特别的环境,这些后续在补充,下面引用的参考,大家有时间一定要看看哦。这一篇就先这样~ 大家也可以留言反馈。国庆快乐~
参考
[程序员的macOS系列:精选Mac App](https://ihtcboy.com/2018/07/15/2018-07-15_程序员的macOS系列:精选MacApp/)
[npm](https://www.npmjs.com)
[The missing package manager for macOS — The missing package manager for macOS](https://brew.sh)
[vi(vim)快捷键小记 | iHTCboy's blog](https://ihtcboy.com/2018/07/28/2018-07-28_Vim快捷键小记/)
[Vim配置、插件和使用技巧 - 简书](https://www.jianshu.com/p/a0b452f8f720)
[Hexo搭建Github Pages博客填坑教程 | iHTCboy's blog](https://ihtcboy.com/2015/09/06/2015_Hexo搭建Github-Pages博客填坑教程/)
[让你的iTerm更Geek! | iHTCboy's blog](https://ihtcboy.com/2018/02/03/2018-02-03_让你的iTerm更Geek!/)
[Git常用命令备忘 - stormzhang](http://stormzhang.com/git/2014/01/27/git-common-command/)
[EffectiveMac - bestswifter](https://bestswifter.gitbook.io/effectivemac/)
[Oh My Zsh - a delightful & open source framework for Z-Shell](https://ohmyz.sh)
[zsh | 程序员的自我修养](https://leohxj.gitbooks.io/a-programmer-prepares/software/mac/softwares/zsh.html)
[tig](https://github.com/jonas/tig)
[ccat](https://github.com/jingweno/ccat)
[sindresorhus/quick-look-plugins: List of useful Quick Look plugins for developers](https://github.com/sindresorhus/quick-look-plugins)
[CocoaPods.org](https://cocoapods.org)
[Carthage/Carthage: A simple, decentralized dependency manager for Cocoa](https://github.com/Carthage/Carthage)
[Carthage 包管理工具,另一种敏捷轻快的 iOS & MAC 开发体验 - SwiftCafe 享受代码的乐趣](http://swiftcafe.io/2015/10/25/swift-daily-carthage-package)
[Apple - Safari - Safari Extensions Gallery](https://safari-extensions.apple.com)
[About GitHub Packages - GitHub Help](https://help.github.com/en/github/managing-packages-with-github-packages/about-github-packages#supported-clients-and-formats)
<br>
如有疑问,欢迎在评论区一起讨论!
如有不正确的地方,欢迎指导!
<br>
注:本文首发于 [iHTCboy's blog](https://iHTCboy.com),如若转载,请注来源
版权声明: 本文为 InfoQ 作者【iHTC】的原创文章。
原文链接:【http://xie.infoq.cn/article/f8a680e92e3de60fe2c78a1ae】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论