2023/2/6 Updated: 調整文章順序,強調 scoop 章節,更新常用工具。 2023/10/10 Update: 調整文章描述,更新常用工具。

全新 Windows 環境上基本開發設定

會興起寫這個的念頭實在是因為這些年頭也遇到不少次重灌工作機的時候,但是安裝的工具實在太多,沒有一個 script 或是筆記實在會忘記這些設定要怎麼處理,每次重新回憶一遍也是很浪費生命。這經歷過好些年後 Windows 環境上出現不少方便的工具,恰好近期我又需要重灌工作機了,用這個機會紀錄一下,順便推廣一下我覺得超好用的工具。

先放上寫好的 script:

設定好 scoop 的安裝路徑(環境變數)

這個設定若你不太在乎硬碟空間的話是可以跳過啦,不過 scoop 軟體預設都會安裝在系統槽 (也就是 C槽),就看你個人使用習慣了。我個人是習慣避開系統槽。

這邊先設定 scoop 的安裝路徑,同時這也會是用 scoop 安裝的應用程式的根路徑。預設會是 scoop 位置下的 app 資料夾裡。

$env:SCOOP='D:\Applications\Scoop'

[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')

接下來你也可以另外設定下載下來的應用的暫存位置。預設會是在 scoop 安裝位置下的 cache 資料夾裡。

$env:SCOOP_CACHE='D:\ScoopCache'

[Environment]::SetEnvironmentVariable('SCOOP_CACHE', $env:SCOOP_CACHE, 'Machine')

安裝 scoop

scoop 就是這次重設環境的最重要工具,他的作用其實就跟老牌的 chocolatey 一樣,也跟 Mac 的 Homebrew 一樣。不過相對於 chocolateyscoop 不需要 .NET Framework 4.x+ 就能執行,另外就是授權費用了, scoopMIT 授權 ,是窮人的好朋友,不過也因為 bucket 是由社群提供,使用前翻閱 source code 還是比較好的,不要去選到一些私人的 bucket 你會比較有保障。官方的 bucket 可以到這邊,選擇有 official bucket 標籤的來源。

ps.要先做好前面的設定 (環境變數的設定) 才會把 scoop 安裝在指定的位置,用 scoop 安裝的應用程式都會裝在 scoop 的 app 資料夾裡,不然他預設會跑去裝在 C槽裡裡,對於開發者來講會吃到珍貴的系統槽空間。

iwr -useb get.scoop.sh | iex

當然,你也可以直接遵循 官方網站 的說明來安裝。

安裝 Font

字形安裝主要取決你 prompt 有沒有需求。有需要的話可以去 官方 下載自型然後安裝。可以考慮使用 Fira CodeNerd Font 字型,也可以使用其他看得順眼的。

設定 Windows Terminal 裡的 Powershell font

設定檔的位置可以直接去這邊改 %localappdata%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\ ,當然也是可以在 Windows Terminal -> Settings -> Open JSON file 來開啟。

開啟一個叫 settings.json 直接到檔案裏面修改 default fonts。

1
2
3
4
5
6
{
    // ... other settings for windows terminal
    "profiles":{
        "fontFace": "your favorite font name" // I put 'Fira Code' here
    }
}

詳細的設定可以到 官方文件 來找。

而 Windows Terminal 則是建議依據官方的方式來裝,雖然 scoop 也是可以裝啦…

安裝 prompt engin ‘starship’

starship: Starship: Cross-Shell Prompt

官方安裝文件: Starship-installation

新增環境變數 STARSHIP_CONFIG ,這是是為了讓自己客製化的設定可以被吃進去 (若你的設定檔希望放在非預設位置的話,就需要有這個設定),或是使用 scoop 安裝 scoop install starship

  • 設定樣式可以參照 官方設定
  • 有一些套好供參考的樣式可以在這邊找找

在 Powershell 的 user profile 的最底下補上以下這行:

1
Invoke-Expression (&starship init powershell)

安裝 Git

現在的開發人員應該沒有不用版控的吧,而版控沒有意外的話應該就是 Git 了。Windows 有兩種方式安裝 Git 最直接的就是直接去 官網 下載安裝檔,依著提示安裝就好。另外一種就是用 scoop 來裝,因為安裝的方式真的沒什麼特別之處,這邊就假設你已經裝好了。

建立 .ssh 資料夾 (if needed)

若是全新的環境基本上不會有這個資料夾,請先到 %USERPROFILE% 新增名為 .ssh 的資料夾。這邊是 OpenSSH 預設會跑來吃設定跟抓 private key 的位置,就算你的 key 想放在別的地方也需要在這邊放上 config 檔指明 key 的存放路徑。另外,若你自己習慣使用 GUI 工具的話就不需要做以下動作了,工具應該都會幫你處理好這個部份,你可以直接跳過以下跟 git 相關的設定。

建立 ssh key (if needed)

ssh-keygen -t ed25519 -C "your_email@example.com"

位置若不是預設的話請用 C:\xxx\yyy\zzz 來標示(Windows 慣用表示法,不需要使用 Unix 的標示法)

上傳 public key (if needed)

基本上不管你是用什麼樣的原始碼託管服務(GitLab, GitHub, GitTea, BitBucket, etc…),基本上最少還是需要用 SSH 的方式來存取 repository 才符合安全要求才是。而這個部分就看各服務要去哪邊設定了,但應該都是滑鼠點一點就能完成。

建立 .bashrc (if needed)

以下設定適用於 Git Bash 環境且你的環境相對單純,不管什麼託管服務都共用同一把 Key。我們可以在 .bashrc 設定以下內容自動讀取 ssh key。

ps. 若你有多個環境使用不同的 ssh key 的話可以在 .ssh 資料夾下新增 config 檔案來做設定。

請參照 GitHub官方設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add /c/your/ssh/key/path
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add /c/your/ssh/key/path
fi

unset env

做好這個設定後,開啟 Git Bash 就能自動幫你匯入 ssh key 了,不過要注意的是 Powershell 環境要另外設定才會自動匯入 ssh key。可以參考以下的設定讓你可以直接在 Powershell 環境無痛使用 git。

安裝 posh-git

這是在 Powershell 環境下使用 Git 的 module。基本上 Windows 使用者使用 Powershell 來操作系統還是比較推薦的。所以好用的 module 還是能裝就裝吧~

方法一: 用 scoop 安裝(我推薦的作法)

  1. scoop install posh-git

  2. Add-PoshGitToProfile

沒錯,就這麼簡單

方法二: 抓原始檔下來安裝(這也是官方建議作法)

  1. gh repo clone dahlbyk/posh-git or git clone https://github.com/dahlbyk/posh-git.git
  2. 執行 .\install.ps1
  3. Add-PoshGitToProfile => posh-git 提供的便捷語法幫你加一段到 profile 裡裡,方便自動載入 posh-git。

設定 Powershell 自動讀取 ssh key

基本上應該多數的開發者都有屬於自己的 GitHub 帳號或是 GitLab 帳號,而且應該 ssh key 應該也是不一樣的才對 (key 一樣的話風險比較高比較不推薦),這樣的話我們就需要一個 config 檔案來指名再登入不同的平台用不同的 key。

新增 config (%USERPROFILE%/.ssh/config) 檔案,指明使用的 ssh key file path,或是在 Git 安裝位置的全域設定 {your_git_install_path}/etc/ssh/ssh_config 裡進行設定。

你可以在一些教學 blog 上翻到他有那些設定,像是這邊: (SSH config file syntax and how-tos for configuring the OpenSSH client),當然你若使用這個方式來設定的話 IdentityFile 這個屬性放的就是 private key 的位置,該檔案的權限請一定要設定好。

注意 private key 的權限不能是所有人都能讀取的權限,最好只開到只有自己這個帳號能夠讀取

若你有其他的設定或是模組需要在 powershell 設定的話可以在 powershell 裡用 echo $PROFILE 指令確認設定檔位置。

其他好用工具

好用 bucket 先裝好

  • main => 這個是預設你一定會有的,裡面都是 CLI 沒有 GUI 的工具
  • extras => 基本上塞的都是有 GUI 的
  • java => 各種 JDK 包含 Oracle 的版本!
  • nerd-fonts => 安裝各種Coder會喜愛的字型
  • versions => 想嘗鮮或是懷舊的話一定要載這個 bucket
1
scoop bucket add {bucket name}

我的個人工具清單(不定期更新):

生產力工具:

  • 7zip
  • brave
  • sidekick-browser
    • 適用於工作使用的瀏覽器
  • hugo
    • 寫部落格很好用也很輕量的工具
  • hugo-extended
  • marktext
    • Markdown 編寫用 GUI
  • markdown-monster
    • 一個微軟 MVP 寫得 markdown GUI 界面漂亮易上手
  • notepadplusplus
    • 工程師的好夥伴
  • pdf-xchange-editor
  • starship
  • xmind
    • 畫 mind map 好用工具

開發相關工具:

  • another-redis-desktop-manager
    • UI 算滿簡潔的不會眼花撩亂
  • azuredatastudio
    • 可以拿來取代 SSMS 的輕量工具
  • dbeaver
    • 可以支援多種 DB 操作的 GUI 工具
  • git
    • 你怎麼可能不裝
  • ilspy
  • k6
    • 做壓力測試的好工具
  • lazygit
    • Git GUI 可以用鍵盤操作也可以用滑鼠操作,介面適合想裝 B 的人
  • linqpad
    • 拿來查詢或是寫小程式驗證概念都很好用
  • mobaxterm
    • 方便好用的 SSH client on Windows
  • posh-git
    • 用 PowerShell 執行 git 你不能少的工具
  • postman
    • 寫 API 的你不能錯過的測試工具
  • pyenv
    • 需要用 python 不能錯過的環境管理工具,讓你可以支援多個版本並做切換
  • volta
    • 新的 JS management tool 競爭者,個人滿看好這款的使用上夠簡單,也能滿足多人團隊開發使用
  • vscode
  • zulu-jdk

優美字形:

  • JetBrains-Mono
  • Hack-NF
  • Hermit-NF

有趣小工具:

  • windirstat
  • treesize-free

其他APPs 可以從 ScoopSearch 來找,他會把該 APP 出現在那些 buckets 也列出來。