MacOS 環境建置
MacOS 環境建置的細節紀錄
-8 min read關聯: [[ 2023-02-05-dotvim ]]
1. 安裝 Apple Command Line Tools
$ xcode-select --install
2. 安裝 Homebrew
$ /bin/bash -c "$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh>)"
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)"
3. 安裝 Homebrew 套件
$ brew install tig diff-so-fancy kind python pyenv jq ack lima
$ echo 'export HOMEBREW_NO_INSTALL_CLEANUP=TRUE' >> ~/.zshrc
4. 安裝 XCode
$ brew upgrade
$ xcode-select --install
5. 安裝 nvm & NodeJS & Pnpm
$ curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh> | bash
$ npm install --global pnpm
$ nvm install 18.16.0
$ nvm alias default node 18.16.0
# 設定自動依照專案載入對應 nvm 版本
# 專案底下要有 .nvmrc
18.12.1
$ code ~/.zshrc
# 把下面的程式碼貼到 ~/.zshrc
autoload -U add-zsh-hook
load-nvmrc() {
local node_version="$(nvm version)"
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$node_version" ]; then
nvm use
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
# 加入 nvmrc (沒事不要執行這個)
node -v > .nvmrc
6. 安裝 VSCode 的 code CLI
打開 VSCode → Cmd+Shift+P → 打 shell command → 選取 Shell Command: Install ‘code’ command in PATH
7. 設定 Git
# 建立第一把 SSH key (如果有 gen 過金鑰可跳過此步驟)
ssh-keygen && pbcopy < ~/.ssh/id_rsa.pub
# 貼上 ssh-key
$ cat ~/.ssh/id_rsa.pub | pbcopy
$ 打開 [User Settings > SSH Keys](<https://gitlab.com/-/profile/keys>)
$ 貼 key 到右側輸入框內
$ Done
# SSH Key 的放置位置
在 ~/.ssh/ 底下
# 查看 SSH Key 的對應連結位置
$ code ~/.ssh/config
# SSH config 解說 (多組 key 時會用到)
Host foo # gitlab.com 的別名, 之後可以用 git@foo 來取代 git@gitlab.com
HostName gitlab.com # 指定要變換的 Repo domain
User git
IdentityFile ~/.ssh/id_rsa_foo # 可以在 keygen 的時候指定名稱
IdentitiesOnly yes
8. 安裝 cz-cli
# 安裝 [cz-cli](<https://github.com/commitizen/cz-cli>)
npm install commitizen cz-conventional-changelog cz-customizable -g
# 要加以下資訊到 package.json
"config": {
"commitizen": {
"path": "node_modules/cz-customizable"
},
"cz-customizable": {
"config": ".cz-config.ts"
}
}
其他 Nice to have
# pyenv 設定:把以下資訊貼到 ~/.zshrc
~~export PYENV_ROOT="$HOME/.pyenv"~~
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# pyenv 設定:向下相容安裝 python2.7
pyenv init
pyenv install 2.7.18
echo 'PATH=$(pyenv root)/shims:$PATH' >> ~/.zshrc && reload
pyenv shell 2.7.18
# 安裝 Xcode
# 安裝 gcloud
$ cd ~ && curl <https://sdk.cloud.google.com> | bash
$ gcloud init
$ gcloud auth configure-docker
# [Nice to have] M1 晶片
$ pyenv install 3.8.10
$ pyenv global 3.8.10 2.7.18
# [Nice to have] 當專案不支援 x64 時
rm -rf node_modules
yarn add node-sass@6.0.1
npm install --target_arch=x64
# [Nice to have] 安裝 tmux
# prefix + I : 安裝各類 tpm 套件
tmux source-file ~/.tmux.conf
git clone <https://github.com/tmux-plugins/tpm> ~/.tmux/plugins/tpm
# [Nice to have] zsh 自動補字 (加 `zsh-autosuggestions` 到 `~/.zshrc` 的 plugins 裡)
git clone <https://github.com/zsh-users/zsh-autosuggestions> $ZSH_CUSTOM/plugins/zsh-autosuggestions