# 建立 .dotfiles 以便在任何 Macbook 上都可以擁有相同的開發環境 ###### tags: `開發環境` ## .dotfiles 是什麼? 一般來說軟體的設定檔案都會在 Home directory(家目錄)建立隱藏 directory(檔名開頭為 `.` 開頭),這些隱藏檔案裡面就會有軟體的設定檔案,比如說目前開發使用的 `Neovim`,就會在 Home directory 的 `.config` 建立 `nvim`,在 `nvim` 裡面就是 `Neovim` 設定檔案存放的地方。  (`.` 開頭為隱藏檔案) .dotfiles 其實就是一個 directory,達配指令就可以把設定檔案移到 .dotfile 內,並且同時「連結」到 Home directory,我們就可以把 .dotfile 內的設定檔案推上雲端帶著走,確保在每個裝置上都可以保持相同的 workflow。  (家目錄) ## 取得使用 `Homebrew` 下載的軟體清單 `Homebrew` 是 macOS 的套件管理工具,使用 macOS 的電腦推薦下載 `Homebrew`,並且「儘量」透過 `Homebrew` 下載軟體。 > A key practice is to install EVERYTHING possible using brew, brew cask, or mas. Even things like fonts! > 但不要使用 `Homebrew` 下載 `nvm`(管理 Node 檔案的工具),因為官方有說明使用 `Homebrew` 下載 `nvm` 會出現一些問題,因此 `nvm` 還是上網找怎麼不使用 `Homebrew` 下載 > 可以查看 [Homebrew 筆記](https://pjchender.dev/app/homebrew/) 內有基本 `brew` 指令 ### 建立 `Brewfile` `brew bundle dump --describe` 可以透過指令建立 `Brewfile`(裡面是所有透過 `Homebrew` 下載的檔案清單)  ### 更新 `Brewfile` > 記得先移動到 `.dotfiles` 再建立 `Brewfile` `Brewfile` 已經存在但想要更新的話就要下另一組指令 `brew bundle dump --force` or `brew bundle dump --describe --force` 其餘的 `Brewfile` 的說明可以看這篇 [Brew Bundle Brewfile Tips](https://gist.github.com/ChristopherA/a579274536aab36ea9966f301ff14f3f) ## 把在 Home directory 的設定檔移到 `.dotfiles` 內 `mv sourceFile targetDirectory` 可以把檔案移到想要的地方,比如說 `mv ~/.zshrc ~/.dotfiles/zsh/` 那麼原本在 Home directory 的 `.zshrc` 就會移到 `~/.dotfile/zsh/` 的 directory 之內了。 ## 快速地將 `.dotfiles` 的設定檔連結到 Home directory 之內 因為軟體還是會從 Home directory 找設定檔案,當我們把設定檔案移到 `.dotfiles` 的話就會造成軟體吃不到設定,所以需要使用另一個指令連結 `.dotfile` 內的設定檔案 `ln -s sourceFile targetDirectory` > `ln` (stands for link) > `-s` (stands for symbolic) 比如說使用 `ln -s ~/dotfiles/.zshrc ~/.zshrc` 那麼就會把 `.dotfile` 內的 `.zshrc` 連結到 Home director。所以在 Home directory 就會出現被連結的 `.zshrc`  (被連結的 `.zshrc` 在 Finder 中會出現小小的箭頭標示)  (用終端機看也可以發現 `.zshrc` 有顯示連結資訊) ## 用 GNU Stow 可以更快速地連結檔案 使用 [stow](https://formulae.brew.sh/formula/stow) 可以更快速地連結檔案,==但是要注意檔案結構要與 Home directory 相同== 一樣透過 `Homebrew` 下載 `brew install stow` ### `.dotfiles` 是一個外層檔案夾,每個直接放在 Home directory 的設定檔多用一層包起來就可以  - `.dotfiles` 是一個裝檔案的容器 - 為每個設定檔建立 directory - 如果該設定檔原本在 Home directory 就直接裸露(沒有任何 directory 包覆)那麼就建立一層 directory 即可 ```shell= /Users/liuweilun ├── .dotfiles │ ├── zsh │ │ └── .zshrc ├── .zshrc ``` - 如果該設定檔本來在 Home directory 是巢狀的結構,那麼在 `.dotfiles` 內建立第一層 directory 後就要模仿 Home directory 的結構 ```shell= /Users/liuweilun ├── .dotfiles │ ├── nvim │ └── .config │ └── nvim | ├── init.lua | ├── lua | └── spell ├── .config | └── nvim | ├── init.lua | ├── lua | └── spell ``` > 可以看到 `.dotfiles/nvim/` 的結構跟原先 Home directory 相同 ### 使用指令 `stow` 快速建立連結 完成設定檔移到 `.dotfiles` 內的工作後,就可以用 GNU Stow 提供的指令快速在 Home directory 建立連結 1. `stow directoryName` 依照 `directoryName` 在 Home directory 建立連結 > `stow zsh` 那麼在 Home directory 就會建立其連結 2. `stow */ # Everything (the '/' ignores the README)` ==但要記得在新的電腦事先安裝 `stow`!== > 教學 Youtube > 1. [Manage your dotfiles across multiple machines with GNU Stow and Git](https://www.youtube.com/watch?v=90xMTKml9O0) > 2. [Manage Your dotfiles Like A Superhero](https://www.youtube.com/watch?v=FHuwzbpTTo0&t=1380s) ## 拿到新電腦後該如何快速建立舊有的開發環境 ### Step 1: 下載 `Homebrew` ### Step 2: 下載 `nvm` > 可以參考 [[NodeJS] 透過 NVM 安裝與使用 Node.js](https://pjchender.dev/nodejs/nvm/) ### Step 3: `clone` Github 上建立 `dotfiles` repo 至本機端 > `git clone Repo ~/.dotfiles` > clone repo 至 `~/.dotfiles` ### Step 4: 下載 `stow` `brew install stow` ### Step 5: 下載 `Brewfile` 中所有的 packages `brew bundle --file ~/myFolder/Brewfile` *ref. [Manage all your installed software at one place with Homebrew Bundle](https://pumpingco.de/blog/brewfile/)* (根據這個人分享,這樣子 `Homebrew` 就會自動下載 `Brewfile` 中的所有 packages 了) 或者 `brew bundle install` (但這個指令會需要 `Brewfile` 在以下 path: `~/Brewfile`) #### 別擔心,並不會重複下載已經有的 packages > It will automatically skip software that’s already installed. *ref. [Easy macOS Loads By Way of Homebrew Bundle - Casey Liss](https://www.caseyliss.com/2019/10/8/brew-bundle)* 另外,如果卡住要等一段時間的話也是很正常的,就慢慢等吧。 ## iTerm 配置    ## Gitlab 建立 SSH key 讓 sourcetree 可以直接 clone gitlab 的專案 可以參考這邊的[教學](https://sinyilin.github.io/git/20191024/1014042378/) 1. clone 的時候選擇 `ssh`  2. 把複製的 `ssh` 貼上 source url,sourcetree 就會自動填入資訊  ## 如果 tmux 無法刪除文字可以試試這個方法 [Backspace not working in tmux command prompt](https://stackoverflow.com/questions/51488920/backspace-not-working-in-tmux-command-prompt) ## tmux 記得要手動下指令下載套件 ## 如果發現 `brew bundle install` 多一層,就必須把裡面的東西拿出來 ``` .dotfile/ -> 設定檔案(v) .dotfile/ -> dotfile/ -> 設定檔案(x) ``` ## Mos 設定   ## 參考資訊 1. [Setting up new M1 Max MacBook Pro - Apps that I use for my app dev](https://www.youtube.com/watch?v=RNqDkF17ogY) -> 內有基本安裝 Homebrew 及 iterm2 後抓 dotfiles 的流程 2. [Manage Your dotfiles Like a Superhero](https://www.jakewiesler.com/blog/managing-dotfiles) 3. [Using GNU Stow to Manage Symbolic Links for Your Dotfiles](https://systemcrafters.net/managing-your-dotfiles/using-gnu-stow/) 4. [brew-bundle-brewfile-tips.md](https://gist.github.com/ChristopherA/a579274536aab36ea9966f301ff14f3f) => brewfile 的 tips
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.