[{"data":1,"prerenderedAt":1566},["ShallowReactive",2],{"blog-index-tw":3},[4,941,1478],{"id":5,"title":6,"author":7,"body":8,"category":925,"cover":926,"coverAlt":927,"description":928,"draft":929,"extension":930,"meta":931,"navigation":310,"path":932,"publishedAt":933,"seo":934,"stem":935,"tags":936,"translationKey":939,"updatedAt":933,"__hash__":940},"articles_tw\u002Ftw\u002Fblog\u002Fcargo-cache-vs-target-folder.md","Cargo 快取和 target 資料夾有什麼不同？Rust 開發者該刪哪個","Harry",{"type":9,"value":10,"toc":909},"minimark",[11,20,31,37,42,45,62,71,223,234,238,244,247,253,256,259,380,387,408,411,447,450,454,461,479,482,494,497,558,572,575,579,582,596,602,605,670,673,715,722,736,740,743,786,792,796,810,820,823,828,831,835,841,845,851,855,858,861,897,905],[12,13,14,15,19],"p",{},"需要騰出磁碟空間時，通常應該先清理已經不再使用的專案 ",[16,17,18],"code",{},"target"," 資料夾。這裡存放的是個別 Rust workspace 的建置成果，之後重新編譯就能產生。只有在 Cargo 共用快取確實很大、內容損壞，或近期不需要離線開發時，才考慮清理相依套件快取；清掉之後，Cargo 必須重新下載或解壓縮套件。",[12,21,22,23,26,27,30],{},"不要直接刪除整個 ",[16,24,25],{},".cargo"," 資料夾。裡面還可能有 Cargo 設定、registry 認證資料，以及透過 ",[16,28,29],{},"cargo install"," 安裝的命令列工具，這些都不是一般快取。",[32,33,34],"blockquote",{},[12,35,36],{},"本文路徑與指令已於 2026 年 8 月 12 日在 macOS 15.7.7、Cargo 1.84.0、rustc 1.84.0 上驗證。Cargo 可以自訂 Home 與建置資料夾，刪除前請先確認自己電腦上的實際路徑。",[38,39,41],"h2",{"id":40},"先講結論先清-target再考慮-cargo-快取","先講結論：先清 target，再考慮 Cargo 快取",[12,43,44],{},"Cargo 會保存兩種性質不同、但都能重新產生的資料：",[46,47,48,55],"ul",{},[49,50,51,52,54],"li",{},"workspace 裡的 ",[16,53,18],{}," 資料夾，存放該專案的編譯成果；",[49,56,57,58,61],{},"Cargo Home（通常是 ",[16,59,60],{},"~\u002F.cargo","），存放共用下載、解壓縮後的套件原始碼、Git 相依套件、設定、認證資料與已安裝工具。",[12,63,64,65,67,68,70],{},"兩者的復原成本不同。刪除 ",[16,66,18],{}," 主要會增加重新編譯的時間；刪除相依套件快取，除了重新編譯，還可能需要網路。因此對多數開發者來說，舊專案的 ",[16,69,18],{}," 是更合理的第一個清理目標。",[72,73,74,93],"table",{},[75,76,77],"thead",{},[78,79,80,84,87,90],"tr",{},[81,82,83],"th",{},"路徑",[81,85,86],{},"內容",[81,88,89],{},"可以刪除嗎？",[81,91,92],{},"刪除後的影響",[94,95,96,113,129,144,163,182,201],"tbody",{},[78,97,98,104,107,110],{},[99,100,101],"td",{},[16,102,103],{},"project\u002Ftarget",[99,105,106],{},"Debug、Release、增量編譯、文件與不同目標平台的建置成果",[99,108,109],{},"可以，先停止建置",[99,111,112],{},"專案需要重新編譯",[78,114,115,120,123,126],{},[99,116,117],{},[16,118,119],{},"~\u002F.cargo\u002Fregistry\u002Fcache",[99,121,122],{},"已下載的 crate 壓縮檔",[99,124,125],{},"通常可以，但要確定能連網",[99,127,128],{},"Cargo 會重新下載缺少的 crate",[78,130,131,136,139,141],{},[99,132,133],{},[16,134,135],{},"~\u002F.cargo\u002Fregistry\u002Fsrc",[99,137,138],{},"從 registry 解壓縮出的套件原始碼",[99,140,125],{},[99,142,143],{},"Cargo 會重新解壓縮或下載",[78,145,146,155,158,160],{},[99,147,148,151,152],{},[16,149,150],{},"~\u002F.cargo\u002Fgit\u002Fdb"," 與 ",[16,153,154],{},"git\u002Fcheckouts",[99,156,157],{},"Git 相依套件的 repository 與 checkout",[99,159,125],{},[99,161,162],{},"Cargo 會重新抓取與 checkout",[78,164,165,170,176,179],{},[99,166,167],{},[16,168,169],{},"~\u002F.cargo\u002Fbin",[99,171,172,173,175],{},"透過 ",[16,174,29],{}," 安裝的工具",[99,177,178],{},"不可當成快取刪除",[99,180,181],{},"已安裝的指令會消失",[78,183,184,192,195,198],{},[99,185,186,151,189],{},[16,187,188],{},"config.toml",[16,190,191],{},"credentials.toml",[99,193,194],{},"Cargo 設定與 registry 認證資料",[99,196,197],{},"不可以",[99,199,200],{},"建置、registry、Proxy 或登入可能失效",[78,202,203,215,218,220],{},[99,204,205,208,209,208,212],{},[16,206,207],{},"Cargo.toml","、",[16,210,211],{},"Cargo.lock",[16,213,214],{},"src",[99,216,217],{},"專案定義、相依版本鎖定與原始碼",[99,219,197],{},[99,221,222],{},"會直接破壞專案",[12,224,225,226,229,230,233],{},"Windows 的預設 Cargo Home 通常位於 ",[16,227,228],{},"%USERPROFILE%\\.cargo","。如果有設定 ",[16,231,232],{},"CARGO_HOME","，不論使用哪個作業系統，都應以該環境變數指向的位置為準。",[38,235,237],{"id":236},"target-資料夾為什麼會變得這麼大","target 資料夾為什麼會變得這麼大？",[12,239,240,241,243],{},"Cargo 預設把建置輸出寫進 workspace 的 ",[16,242,18],{}," 資料夾。Debug 與 Release profile 使用不同的子資料夾；加入其他編譯目標後，各個 target triple 也會保存自己的成果。增量編譯還會保留中間資料，讓後續建置更快。",[12,245,246],{},"如果同一個 workspace 會建置桌面程式、WebAssembly、多種架構或多組 feature，累積容量遠大於原始碼並不意外。Cargo 官方把這些內容視為可重新產生的建置資料，但刪除仍有代價：下一次建置會從沒有快取的狀態開始。",[12,248,249,250,252],{},"撰寫本文時，MangoDisk repository 的 ",[16,251,18],{}," 佔了 27 GB。同一台 Mac 的 Cargo registry 壓縮檔快取為 189 MB、解壓縮後的原始碼為 1.9 GB，Cargo Git 資料庫則是 17 MB。這只是這台電腦的實測結果，不代表每個人都能釋放相同空間；重點是應該先量測，而不是預設全域快取一定最大。",[38,254,255],{"id":255},"清理前先確認實際路徑與容量",[12,257,258],{},"在 macOS 或 Linux 的 Rust workspace 中，可以先執行這些唯讀指令：",[260,261,266],"pre",{"className":262,"code":263,"language":264,"meta":265,"style":265},"language-bash shiki shiki-themes github-light github-dark","cargo_home=\"${CARGO_HOME:-$HOME\u002F.cargo}\"\n\ndu -sh target 2>\u002Fdev\u002Fnull\ndu -sh \"$cargo_home\u002Fregistry\u002Fcache\" \"$cargo_home\u002Fregistry\u002Fsrc\" \\\n  \"$cargo_home\u002Fgit\u002Fdb\" \"$cargo_home\u002Fgit\u002Fcheckouts\" 2>\u002Fdev\u002Fnull\n","bash","",[16,267,268,305,312,332,358],{"__ignoreMap":265},[269,270,273,277,281,285,287,290,293,296,299,302],"span",{"class":271,"line":272},"line",1,[269,274,276],{"class":275},"sVt8B","cargo_home",[269,278,280],{"class":279},"szBVR","=",[269,282,284],{"class":283},"sZZnC","\"${",[269,286,232],{"class":275},[269,288,289],{"class":279},":-",[269,291,292],{"class":275},"$HOME",[269,294,295],{"class":279},"\u002F",[269,297,298],{"class":283},".",[269,300,301],{"class":275},"cargo",[269,303,304],{"class":283},"}\"\n",[269,306,308],{"class":271,"line":307},2,[269,309,311],{"emptyLinePlaceholder":310},true,"\n",[269,313,315,319,323,326,329],{"class":271,"line":314},3,[269,316,318],{"class":317},"sScJk","du",[269,320,322],{"class":321},"sj4cs"," -sh",[269,324,325],{"class":283}," target",[269,327,328],{"class":279}," 2>",[269,330,331],{"class":283},"\u002Fdev\u002Fnull\n",[269,333,335,337,339,342,345,348,350,352,355],{"class":271,"line":334},4,[269,336,318],{"class":317},[269,338,322],{"class":321},[269,340,341],{"class":283}," \"",[269,343,344],{"class":275},"$cargo_home",[269,346,347],{"class":283},"\u002Fregistry\u002Fcache\"",[269,349,341],{"class":283},[269,351,344],{"class":275},[269,353,354],{"class":283},"\u002Fregistry\u002Fsrc\"",[269,356,357],{"class":321}," \\\n",[269,359,361,364,366,369,371,373,376,378],{"class":271,"line":360},5,[269,362,363],{"class":283},"  \"",[269,365,344],{"class":275},[269,367,368],{"class":283},"\u002Fgit\u002Fdb\"",[269,370,341],{"class":283},[269,372,344],{"class":275},[269,374,375],{"class":283},"\u002Fgit\u002Fcheckouts\"",[269,377,328],{"class":279},[269,379,331],{"class":283},[12,381,382,383,386],{},"Cargo 也可能使用自訂的 target 資料夾。下列指令會輸出 workspace metadata，其中包含實際的 ",[16,384,385],{},"target_directory","：",[260,388,390],{"className":262,"code":389,"language":264,"meta":265,"style":265},"cargo metadata --no-deps --format-version 1\n",[16,391,392],{"__ignoreMap":265},[269,393,394,396,399,402,405],{"class":271,"line":272},[269,395,301],{"class":317},[269,397,398],{"class":283}," metadata",[269,400,401],{"class":321}," --no-deps",[269,403,404],{"class":321}," --format-version",[269,406,407],{"class":321}," 1\n",[12,409,410],{},"在 PowerShell 中，可以分別檢查目前專案與預設 Cargo Home：",[260,412,416],{"className":413,"code":414,"language":415,"meta":265,"style":265},"language-powershell shiki shiki-themes github-light github-dark","$CargoHome = if ($env:CARGO_HOME) { $env:CARGO_HOME } else { Join-Path $HOME \".cargo\" }\n\nGet-ChildItem .\\target -Recurse -File -Force -ErrorAction SilentlyContinue |\n  Measure-Object Length -Sum\nGet-ChildItem \"$CargoHome\\registry\\cache\" -Recurse -File -Force -ErrorAction SilentlyContinue |\n  Measure-Object Length -Sum\n","powershell",[16,417,418,423,427,432,437,442],{"__ignoreMap":265},[269,419,420],{"class":271,"line":272},[269,421,422],{},"$CargoHome = if ($env:CARGO_HOME) { $env:CARGO_HOME } else { Join-Path $HOME \".cargo\" }\n",[269,424,425],{"class":271,"line":307},[269,426,311],{"emptyLinePlaceholder":310},[269,428,429],{"class":271,"line":314},[269,430,431],{},"Get-ChildItem .\\target -Recurse -File -Force -ErrorAction SilentlyContinue |\n",[269,433,434],{"class":271,"line":334},[269,435,436],{},"  Measure-Object Length -Sum\n",[269,438,439],{"class":271,"line":360},[269,440,441],{},"Get-ChildItem \"$CargoHome\\registry\\cache\" -Recurse -File -Force -ErrorAction SilentlyContinue |\n",[269,443,445],{"class":271,"line":444},6,[269,446,436],{},[12,448,449],{},"PowerShell 會以位元組回報結果。更重要的是，這些檢查會讓你在刪除前再次確認正確位置。",[38,451,453],{"id":452},"如何安全清理專案-target-資料夾","如何安全清理專案 target 資料夾",[12,455,456,457,460],{},"先停止 ",[16,458,459],{},"cargo build","、測試、正在編譯的 rust-analyzer 工作，以及從該 workspace 啟動的程式。接著預覽 Cargo 準備移除的內容：",[260,462,464],{"className":262,"code":463,"language":264,"meta":265,"style":265},"cargo clean --dry-run -v\n",[16,465,466],{"__ignoreMap":265},[269,467,468,470,473,476],{"class":271,"line":272},[269,469,301],{"class":317},[269,471,472],{"class":283}," clean",[269,474,475],{"class":321}," --dry-run",[269,477,478],{"class":321}," -v\n",[12,480,481],{},"確認範圍正確後，清理目前 workspace 的完整 target 資料夾：",[260,483,485],{"className":262,"code":484,"language":264,"meta":265,"style":265},"cargo clean\n",[16,486,487],{"__ignoreMap":265},[269,488,489,491],{"class":271,"line":272},[269,490,301],{"class":317},[269,492,493],{"class":283}," clean\n",[12,495,496],{},"如果想保留仍有用的建置資料，可以縮小範圍：",[260,498,500],{"className":262,"code":499,"language":264,"meta":265,"style":265},"# 只移除 Release profile 的建置成果\ncargo clean --release\n\n# 只移除產生的文件\ncargo clean --doc\n\n# 只移除 workspace 中某個 package 的建置成果\ncargo clean -p your-package-name\n",[16,501,502,508,517,521,526,535,539,545],{"__ignoreMap":265},[269,503,504],{"class":271,"line":272},[269,505,507],{"class":506},"sJ8bj","# 只移除 Release profile 的建置成果\n",[269,509,510,512,514],{"class":271,"line":307},[269,511,301],{"class":317},[269,513,472],{"class":283},[269,515,516],{"class":321}," --release\n",[269,518,519],{"class":271,"line":314},[269,520,311],{"emptyLinePlaceholder":310},[269,522,523],{"class":271,"line":334},[269,524,525],{"class":506},"# 只移除產生的文件\n",[269,527,528,530,532],{"class":271,"line":360},[269,529,301],{"class":317},[269,531,472],{"class":283},[269,533,534],{"class":321}," --doc\n",[269,536,537],{"class":271,"line":444},[269,538,311],{"emptyLinePlaceholder":310},[269,540,542],{"class":271,"line":541},7,[269,543,544],{"class":506},"# 只移除 workspace 中某個 package 的建置成果\n",[269,546,548,550,552,555],{"class":271,"line":547},8,[269,549,301],{"class":317},[269,551,472],{"class":283},[269,553,554],{"class":321}," -p",[269,556,557],{"class":283}," your-package-name\n",[12,559,560,563,564,567,568,571],{},[16,561,562],{},"cargo clean"," 會遵循 Cargo 設定的 target 位置。對使用自訂 ",[16,565,566],{},"target-dir"," 的 workspace 而言，這比直接假設資料夾一定是 ",[16,569,570],{},".\u002Ftarget"," 更穩妥。",[12,573,574],{},"清理後資料夾再次出現很正常。下一次建置會重新建立它；因為增量編譯資料已經移除，第一次完整編譯通常會慢不少。",[38,576,578],{"id":577},"什麼時候才需要清理-cargo-共用快取","什麼時候才需要清理 Cargo 共用快取？",[12,580,581],{},"以下情況可以考慮清理：",[46,583,584,587,590,593],{},[49,585,586],{},"實際量測後，快取容量確實大到值得處理；",[49,588,589],{},"下載的壓縮檔或 Git 相依套件已損壞；",[49,591,592],{},"舊 toolchain 與專案留下近期不會再用的套件；",[49,594,595],{},"現在必須騰出空間，而且之後有穩定網路能夠復原。",[12,597,598,599,601],{},"搭飛機前、需要離線工作，或公司內部 registry 可能暫時無法連線時，不建議清理。也要先確認團隊是否使用自訂 registry、vendored dependencies 或非預設的 ",[16,600,232],{},"。",[12,603,604],{},"Cargo Home 官方文件把 registry 與 Git 相關內容視為可以透過重新解壓縮、checkout 或下載復原的快取。若決定手動刪除，請先結束 Cargo 相關程序，設定正確的 Cargo Home，並做最後一次檢查：",[260,606,608],{"className":262,"code":607,"language":264,"meta":265,"style":265},"cargo_home=\"${CARGO_HOME:-$HOME\u002F.cargo}\"\ndu -sh \"$cargo_home\u002Fregistry\u002Fcache\" \"$cargo_home\u002Fregistry\u002Fsrc\" \\\n  \"$cargo_home\u002Fgit\u002Fdb\" \"$cargo_home\u002Fgit\u002Fcheckouts\" 2>\u002Fdev\u002Fnull\n",[16,609,610,632,652],{"__ignoreMap":265},[269,611,612,614,616,618,620,622,624,626,628,630],{"class":271,"line":272},[269,613,276],{"class":275},[269,615,280],{"class":279},[269,617,284],{"class":283},[269,619,232],{"class":275},[269,621,289],{"class":279},[269,623,292],{"class":275},[269,625,295],{"class":279},[269,627,298],{"class":283},[269,629,301],{"class":275},[269,631,304],{"class":283},[269,633,634,636,638,640,642,644,646,648,650],{"class":271,"line":307},[269,635,318],{"class":317},[269,637,322],{"class":321},[269,639,341],{"class":283},[269,641,344],{"class":275},[269,643,347],{"class":283},[269,645,341],{"class":283},[269,647,344],{"class":275},[269,649,354],{"class":283},[269,651,357],{"class":321},[269,653,654,656,658,660,662,664,666,668],{"class":271,"line":314},[269,655,363],{"class":283},[269,657,344],{"class":275},[269,659,368],{"class":283},[269,661,341],{"class":283},[269,663,344],{"class":275},[269,665,375],{"class":283},[269,667,328],{"class":279},[269,669,331],{"class":283},[12,671,672],{},"接著只刪除自己明確選定的快取子資料夾：",[260,674,676],{"className":262,"code":675,"language":264,"meta":265,"style":265},"rm -rf \"$cargo_home\u002Fregistry\u002Fcache\" \"$cargo_home\u002Fregistry\u002Fsrc\" \\\n  \"$cargo_home\u002Fgit\u002Fdb\" \"$cargo_home\u002Fgit\u002Fcheckouts\"\n",[16,677,678,700],{"__ignoreMap":265},[269,679,680,683,686,688,690,692,694,696,698],{"class":271,"line":272},[269,681,682],{"class":317},"rm",[269,684,685],{"class":321}," -rf",[269,687,341],{"class":283},[269,689,344],{"class":275},[269,691,347],{"class":283},[269,693,341],{"class":283},[269,695,344],{"class":275},[269,697,354],{"class":283},[269,699,357],{"class":321},[269,701,702,704,706,708,710,712],{"class":271,"line":307},[269,703,363],{"class":283},[269,705,344],{"class":275},[269,707,368],{"class":283},[269,709,341],{"class":283},[269,711,344],{"class":275},[269,713,714],{"class":283},"\u002Fgit\u002Fcheckouts\"\n",[12,716,717,718,721],{},"這個指令不會經過垃圾桶，絕對不要把它簡化成 ",[16,719,720],{},"rm -rf ~\u002F.cargo","。完成後，下一次連網建置可能需要重新下載並解壓縮相依套件。",[12,723,724,725,728,729,731,732,735],{},"Windows 使用者可以透過檔案總管，檢查並刪除 ",[16,726,727],{},"%CARGO_HOME%"," 或 ",[16,730,228],{}," 下對應的快取子資料夾。用圖形介面逐項確認，比較不容易把 ",[16,733,734],{},"bin","、設定或認證檔案一起選進去。",[38,737,739],{"id":738},"哪些內容不能當作-cargo-快取清理","哪些內容不能當作 Cargo 快取清理？",[12,741,742],{},"不要把以下內容列為清理目標：",[46,744,745,758,764,770,783],{},[49,746,747,750,751,208,754,757],{},[16,748,749],{},".cargo\u002Fbin","：這裡存放 ",[16,752,753],{},"cargo-audit",[16,755,756],{},"cargo-edit"," 等已安裝指令；",[49,759,760,763],{},[16,761,762],{},".cargo\u002Fcredentials.toml","：這裡可能存放 registry 登入 token；",[49,765,766,769],{},[16,767,768],{},".cargo\u002Fconfig.toml","：這裡可能定義 registry、alias、網路設定與編譯目標行為；",[49,771,772,773,208,775,208,777,728,780,782],{},"專案裡的 ",[16,774,207],{},[16,776,211],{},[16,778,779],{},"build.rs",[16,781,214],{},"；",[49,784,785],{},"vendored dependencies 或團隊維護的離線 mirror，除非負責人已有復原計畫。",[12,787,788,789,791],{},"如果不確定某個資料夾是否只是快取，就停在檢查步驟。位於 ",[16,790,25],{}," 底下，不代表它可以隨意刪除。",[38,793,795],{"id":794},"使用-mangodisk-檢查-rust-建置成果","使用 MangoDisk 檢查 Rust 建置成果",[12,797,798,803,804,806,807,809],{},[799,800,802],"a",{"href":801},"\u002Ftw\u002Fdocs\u002Ffeatures\u002Fdeep-clean","MangoDisk 深度清理","可以辨識 Rust 專案的 ",[16,805,18],{}," 資料夾，以及各平台對應的 Cargo 快取位置。規則不會把整個 ",[16,808,25],{}," 當成清理目標，專案建置成果也不會預設勾選。",[12,811,812,813,815,816,601],{},"掃描會在本機完成。你可以先查看路徑與實際容量，再決定是否刪除；當多個 workspace 都有自己的 ",[16,814,18],{}," 時特別實用。完整的確認與清理記錄流程可參考 ",[799,817,819],{"href":818},"\u002Ftw\u002Fdocs\u002Fsafety","MangoDisk 安全指南",[38,821,822],{"id":822},"常見問題",[824,825,827],"h3",{"id":826},"rust-專案的-target-資料夾可以安全刪除嗎","Rust 專案的 target 資料夾可以安全刪除嗎？",[12,829,830],{},"可以，前提是它確實是 Cargo 設定的建置輸出位置，而且目前沒有建置工作。裡面是可重新產生的成果，不是專案原始碼；刪除後要預期第一次完整編譯會比較久。",[824,832,834],{"id":833},"cargo-clean-會清掉-cargo-的下載快取嗎","cargo clean 會清掉 Cargo 的下載快取嗎？",[12,836,837,838,840],{},"不會。",[16,839,562],{}," 移除的是 target 資料夾中的建置成果，不會清空 Cargo Home 裡的 registry 或 Git 相依套件快取。",[824,842,844],{"id":843},"可以刪除-cargolock-來省空間或修復相依套件嗎","可以刪除 Cargo.lock 來省空間或修復相依套件嗎？",[12,846,847,848,850],{},"不可以。",[16,849,211],{}," 很小，用來記錄已解析的相依套件版本。刪除它不是磁碟清理，還可能讓 Cargo 選到不同版本。",[824,852,854],{"id":853},"為什麼-cargo-快取和-target-又出現了","為什麼 Cargo 快取和 target 又出現了？",[12,856,857],{},"這是正常現象。專案建置時，Cargo 會重新產生建置成果並復原缺少的相依資料。清理只會移除舊的可再生資料，不會停用快取機制。",[38,859,860],{"id":860},"資料來源與延伸閱讀",[46,862,863,871,878,885,891],{},[49,864,865],{},[799,866,870],{"href":867,"rel":868},"https:\u002F\u002Fdoc.rust-lang.org\u002Fstable\u002Fcargo\u002Freference\u002Fbuild-cache.html",[869],"nofollow","Cargo Book：Build Cache",[49,872,873],{},[799,874,877],{"href":875,"rel":876},"https:\u002F\u002Fdoc.rust-lang.org\u002Fcargo\u002Fcommands\u002Fcargo-clean.html",[869],"Cargo Book：cargo clean",[49,879,880],{},[799,881,884],{"href":882,"rel":883},"https:\u002F\u002Fdoc.rust-lang.org\u002Fcargo\u002Fguide\u002Fcargo-home.html",[869],"Cargo Book：Cargo Home",[49,886,887],{},[799,888,890],{"href":889},"\u002Ftw\u002Fblog\u002Fhow-to-clear-xcode-derived-data-safely","如何安全刪除 Xcode Derived Data",[49,892,893],{},[799,894,896],{"href":895},"\u002Ftw\u002Fblog\u002Fwhy-i-built-mangodisk","我為什麼開發 MangoDisk",[12,898,899,900,904],{},"想先看清楚 Rust 建置成果與 Cargo 快取，再決定要不要刪除？可以",[799,901,903],{"href":902},"\u002Ftw\u002F","下載 MangoDisk","，直接在本機檢查掃描結果。",[906,907,908],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":265,"searchDepth":307,"depth":307,"links":910},[911,912,913,914,915,916,917,918,924],{"id":40,"depth":307,"text":41},{"id":236,"depth":307,"text":237},{"id":255,"depth":307,"text":255},{"id":452,"depth":307,"text":453},{"id":577,"depth":307,"text":578},{"id":738,"depth":307,"text":739},{"id":794,"depth":307,"text":795},{"id":822,"depth":307,"text":822,"children":919},[920,921,922,923],{"id":826,"depth":314,"text":827},{"id":833,"depth":314,"text":834},{"id":843,"depth":314,"text":844},{"id":853,"depth":314,"text":854},{"id":860,"depth":307,"text":860},"開發者磁碟清理","\u002Fimages\u002Fblog\u002Fcargo-cache-vs-target-folder.webp","將 Rust 相依套件與專案建置成果分開檢查後再安全清理","了解 Rust 專案 target 建置成果與 Cargo 相依套件快取的差異、哪些可以安全刪除，以及 .cargo 裡哪些內容不該當成快取清理",false,"md",{},"\u002Ftw\u002Fblog\u002Fcargo-cache-vs-target-folder","2026-08-12T00:00:00+08:00",{"title":6,"description":928},"tw\u002Fblog\u002Fcargo-cache-vs-target-folder",[937,938,562,925],"Cargo 快取","Rust target 資料夾","article-cargo-cache-vs-target-folder","9lYVBZJ_z4ZteA3yn6SrC5_pJzNvbkwEyQ0Ebo6Pjas",{"id":942,"title":943,"author":7,"body":944,"category":925,"cover":1465,"coverAlt":1466,"description":1467,"draft":929,"extension":930,"meta":1468,"navigation":310,"path":889,"publishedAt":1469,"seo":1470,"stem":1471,"tags":1472,"translationKey":1476,"updatedAt":933,"__hash__":1477},"articles_tw\u002Ftw\u002Fblog\u002Fhow-to-clear-xcode-derived-data-safely.md","如何安全刪除 Xcode Derived Data：釋放 Mac 儲存空間",{"type":9,"value":945,"toc":1449},[946,954,961,966,970,973,987,990,993,1010,1013,1017,1096,1107,1111,1114,1142,1145,1149,1152,1200,1203,1219,1222,1240,1243,1289,1292,1296,1303,1306,1343,1346,1350,1353,1356,1359,1363,1369,1378,1380,1384,1387,1391,1394,1398,1401,1405,1408,1411,1439,1446],[12,947,948,949,953],{},"可以，Xcode Derived Data 通常能安全刪除。預設資料夾裡存放的是 Xcode 可以重新產生的建置成果與索引，刪除後",[950,951,952],"strong",{},"不會影響專案原始碼","，但下一次建置和程式碼索引會花比較久的時間。",[12,955,956,957,960],{},"真正要留意的是刪除範圍：先結束 Xcode，並確認操作的是 ",[16,958,959],{},"~\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData","，不要誤刪 Archives、模擬器裝置資料或專案資料夾。",[32,962,963],{},[12,964,965],{},"本文所列路徑與檢查指令已於 2026 年 8 月 10 日在 macOS 15.7.7、Xcode 16.2 上驗證。Xcode 選單位置可能隨版本調整；若你沒有自訂建置位置，預設 Derived Data 路徑與下方的終端機操作仍然適用。",[38,967,969],{"id":968},"xcode-derived-data-是什麼","Xcode Derived Data 是什麼？",[12,971,972],{},"Xcode 會把建置專案與分析程式碼時產生的檔案放進 Derived Data，常見內容包括：",[46,974,975,978,981,984],{},[49,976,977],{},"編譯成果與建置過程中的中間檔案；",[49,979,980],{},"用於程式碼導覽、搜尋與自動完成的索引；",[49,982,983],{},"記錄檔與其他專案建置輔助資料；",[49,985,986],{},"該工作區在本機簽出的 Swift Package 與相關建置資料。",[12,988,989],{},"Apple 文件指出，工作區索引位於各自的 Derived Data 目錄；Xcode 版本說明也曾建議在部分建置問題發生時，清除該專案的 Derived Data 作為排除方式。換句話說，這個資料夾的內容原本就應該能夠重新產生，而不是原始碼的唯一來源。",[12,991,992],{},"遇到下列情況時，可以考慮清除：",[46,994,995,998,1001,1004,1007],{},[49,996,997],{},"已不再使用的舊專案留下數 GB 的產生資料；",[49,999,1000],{},"建置時反覆使用過期的結果；",[49,1002,1003],{},"程式碼自動完成或索引運作異常；",[49,1005,1006],{},"更新 Xcode 後，Package 或 Macro 建置失敗；",[49,1008,1009],{},"需要釋放磁碟空間，而且可以接受第一次重建較慢。",[12,1011,1012],{},"不要只因為 Derived Data 存在就定期清空。開發中的專案會利用增量建置資料縮短編譯時間；若資料夾不大、運作也正常，刪除它只會用建置時間交換少量磁碟空間。",[38,1014,1016],{"id":1015},"哪些內容可以安全刪除","哪些內容可以安全刪除？",[72,1018,1019,1031],{},[75,1020,1021],{},[78,1022,1023,1026,1029],{},[81,1024,1025],{},"位置",[81,1027,1028],{},"建議",[81,1030,92],{},[94,1032,1033,1046,1059,1072,1085],{},[78,1034,1035,1040,1043],{},[99,1036,1037],{},[16,1038,1039],{},"~\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\u002FProjectName-*",[99,1041,1042],{},"可刪除你能確認的單一專案資料",[99,1044,1045],{},"該專案需要重新建置與建立索引",[78,1047,1048,1053,1056],{},[99,1049,1050,1052],{},[16,1051,959],{}," 內的所有內容",[99,1054,1055],{},"需要完整重設時可以清除",[99,1057,1058],{},"所有 Xcode 專案都需要重新建置與建立索引",[78,1060,1061,1066,1069],{},[99,1062,1063],{},[16,1064,1065],{},"~\u002FLibrary\u002FDeveloper\u002FXcode\u002FArchives",[99,1067,1068],{},"不要當成快取刪除",[99,1070,1071],{},"可能失去用於發佈或當機分析的封存檔，以及對應的除錯符號",[78,1073,1074,1079,1082],{},[99,1075,1076],{},[16,1077,1078],{},"~\u002FLibrary\u002FDeveloper\u002FCoreSimulator\u002FDevices",[99,1080,1081],{},"請另外逐項檢查",[99,1083,1084],{},"可能失去模擬器中的應用程式、設定與測試資料",[78,1086,1087,1090,1093],{},[99,1088,1089],{},"Git 儲存庫或專案資料夾",[99,1091,1092],{},"不要刪除",[99,1094,1095],{},"這裡才是實際的原始碼與專案設定",[12,1097,1098,1099,1102,1103,1106],{},"清除前也請先查看 Xcode 的 ",[950,1100,1101],{},"Settings → Locations","。如果 Derived Data 設為 ",[950,1104,1105],{},"Custom","，請使用畫面上顯示的位置，不要直接套用預設路徑。",[38,1108,1110],{"id":1109},"方法一使用-finder-清除-derived-data","方法一：使用 Finder 清除 Derived Data",[12,1112,1113],{},"如果想在刪除前先看清楚各個專案資料夾，使用 Finder 最直觀。",[1115,1116,1117,1120,1126,1133,1136,1139],"ol",{},[49,1118,1119],{},"儲存工作，並停止正在執行的建置或測試。",[49,1121,1122,1123,601],{},"開啟 ",[950,1124,1125],{},"Xcode → Settings → Locations",[49,1127,1128,1129,1132],{},"找到 ",[950,1130,1131],{},"Derived Data","，按一下路徑旁的箭頭，在 Finder 中顯示該資料夾。",[49,1134,1135],{},"結束 Xcode。",[49,1137,1138],{},"只將有問題或已不再使用的專案資料夾移到垃圾桶。若要完整重設，再移動 Derived Data 資料夾內的所有內容。",[49,1140,1141],{},"重新開啟 Xcode 並再次建置專案。",[12,1143,1144],{},"先移到垃圾桶，可以保留短暫的復原機會。確認專案能正常開啟並重新建置後，再清空垃圾桶。",[38,1146,1148],{"id":1147},"方法二使用終端機檢查與清除","方法二：使用終端機檢查與清除",[12,1150,1151],{},"先確認資料夾及其佔用的總空間：",[260,1153,1155],{"className":262,"code":1154,"language":264,"meta":265,"style":265},"du -sh \"$HOME\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\"\ndu -sh \"$HOME\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\"\u002F* 2>\u002Fdev\u002Fnull | sort -h\n",[16,1156,1157,1170],{"__ignoreMap":265},[269,1158,1159,1161,1163,1165,1167],{"class":271,"line":272},[269,1160,318],{"class":317},[269,1162,322],{"class":321},[269,1164,341],{"class":283},[269,1166,292],{"class":275},[269,1168,1169],{"class":283},"\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\"\n",[269,1171,1172,1174,1176,1178,1180,1183,1186,1188,1191,1194,1197],{"class":271,"line":307},[269,1173,318],{"class":317},[269,1175,322],{"class":321},[269,1177,341],{"class":283},[269,1179,292],{"class":275},[269,1181,1182],{"class":283},"\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\"\u002F",[269,1184,1185],{"class":321},"*",[269,1187,328],{"class":279},[269,1189,1190],{"class":283},"\u002Fdev\u002Fnull",[269,1192,1193],{"class":279}," |",[269,1195,1196],{"class":317}," sort",[269,1198,1199],{"class":321}," -h\n",[12,1201,1202],{},"每個專案資料夾通常會以可辨識的專案名稱開頭，後面接著一段唯一識別字串。可以先在 Finder 中開啟檢查：",[260,1204,1206],{"className":262,"code":1205,"language":264,"meta":265,"style":265},"open \"$HOME\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\"\n",[16,1207,1208],{"__ignoreMap":265},[269,1209,1210,1213,1215,1217],{"class":271,"line":272},[269,1211,1212],{"class":317},"open",[269,1214,341],{"class":283},[269,1216,292],{"class":275},[269,1218,1169],{"class":283},[12,1220,1221],{},"若要永久刪除單一專案，請將範例資料夾名稱換成你在輸出結果中看到的完整名稱：",[260,1223,1225],{"className":262,"code":1224,"language":264,"meta":265,"style":265},"rm -rf \"$HOME\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\u002FYourProject-xxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n",[16,1226,1227],{"__ignoreMap":265},[269,1228,1229,1231,1233,1235,1237],{"class":271,"line":272},[269,1230,682],{"class":317},[269,1232,685],{"class":321},[269,1234,341],{"class":283},[269,1236,292],{"class":275},[269,1238,1239],{"class":283},"\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\u002FYourProject-xxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n",[12,1241,1242],{},"若要永久刪除預設 Derived Data 資料夾內的所有項目：",[260,1244,1246],{"className":262,"code":1245,"language":264,"meta":265,"style":265},"find \"$HOME\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\" \\\n  -mindepth 1 -maxdepth 1 -exec rm -rf {} +\n",[16,1247,1248,1262],{"__ignoreMap":265},[269,1249,1250,1253,1255,1257,1260],{"class":271,"line":272},[269,1251,1252],{"class":317},"find",[269,1254,341],{"class":283},[269,1256,292],{"class":275},[269,1258,1259],{"class":283},"\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\"",[269,1261,357],{"class":321},[269,1263,1264,1267,1270,1273,1275,1278,1281,1283,1286],{"class":271,"line":307},[269,1265,1266],{"class":321},"  -mindepth",[269,1268,1269],{"class":321}," 1",[269,1271,1272],{"class":321}," -maxdepth",[269,1274,1269],{"class":321},[269,1276,1277],{"class":321}," -exec",[269,1279,1280],{"class":283}," rm",[269,1282,685],{"class":321},[269,1284,1285],{"class":283}," {}",[269,1287,1288],{"class":283}," +\n",[12,1290,1291],{},"這些指令不會經過垃圾桶。按下 Return 前，務必再看一次完整路徑；如果 Xcode 正在建置、測試或建立索引，請不要執行最後一段指令。",[38,1293,1295],{"id":1294},"方法三先試試-clean-build-folder","方法三：先試試 Clean Build Folder",[12,1297,1298,1299,1302],{},"如果只有一個專案出現建置問題，且不需要連同索引及其他工作區資料一起刪除，可以先在 Xcode 中執行 ",[950,1300,1301],{},"Product → Clean Build Folder","。Apple 也將這個操作列為疑難排解方式之一。",[12,1304,1305],{},"工作區對應的指令可能如下：",[260,1307,1309],{"className":262,"code":1308,"language":264,"meta":265,"style":265},"xcodebuild \\\n  -workspace YourApp.xcworkspace \\\n  -scheme YourApp \\\n  clean\n",[16,1310,1311,1318,1328,1338],{"__ignoreMap":265},[269,1312,1313,1316],{"class":271,"line":272},[269,1314,1315],{"class":317},"xcodebuild",[269,1317,357],{"class":321},[269,1319,1320,1323,1326],{"class":271,"line":307},[269,1321,1322],{"class":321},"  -workspace",[269,1324,1325],{"class":283}," YourApp.xcworkspace",[269,1327,357],{"class":321},[269,1329,1330,1333,1336],{"class":271,"line":314},[269,1331,1332],{"class":321},"  -scheme",[269,1334,1335],{"class":283}," YourApp",[269,1337,357],{"class":321},[269,1339,1340],{"class":271,"line":334},[269,1341,1342],{"class":283},"  clean\n",[12,1344,1345],{},"這個做法的範圍比刪除整個 Derived Data 資料夾小。它只會要求目前選取的建置系統清除該專案的建置成果，不是針對所有 Xcode 工作區的磁碟清理指令。",[38,1347,1349],{"id":1348},"清除後會發生什麼事","清除後會發生什麼事？",[12,1351,1352],{},"第一次建置通常會比較慢。Xcode 必須重新建置各個 target、建立索引，還可能需要再次解析或下載 Package 資料。在索引完成前，程式碼自動完成與跳至定義也可能暫時不完整。",[12,1354,1355],{},"專案檔案、Git 歷史記錄、簽署憑證、Provisioning Profile 和 Xcode Archives 都不在預設的 Derived Data 根目錄中。只刪除本文說明的確切路徑，就不會影響這些內容。",[12,1357,1358],{},"如果完整重建後原本的錯誤再次出現，問題根源很可能不是 Derived Data。此時應查看第一個有意義的編譯錯誤、套件相依性解析、目前使用的 Xcode 版本與專案 Build Settings，而不是反覆清除快取。",[38,1360,1362],{"id":1361},"使用-mangodisk-檢查-xcode-derived-data","使用 MangoDisk 檢查 Xcode Derived Data",[12,1364,1365,1366,1368],{},"如果希望先確認大小與確切位置，再決定是否清除，",[799,1367,802],{"href":801},"包含專門處理 Xcode Derived Data 的規則。",[12,1370,1371,1372,1374,1375,601],{},"這項規則刻意將範圍限制得很明確：只處理預設的 ",[16,1373,959],{}," 根目錄、要求先關閉 Xcode，而且預設不會選取。它不包含專案原始碼、Archives、簽署資料、模擬器裝置或已安裝的模擬器執行階段。掃描全程在本機進行，清理前也會由你確認結果。完整的確認與清理紀錄流程，請參閱 ",[799,1376,1377],{"href":818},"MangoDisk 安全性指南",[38,1379,822],{"id":822},[824,1381,1383],{"id":1382},"xcode-開啟時可以刪除-derived-data-嗎","Xcode 開啟時可以刪除 Derived Data 嗎？",[12,1385,1386],{},"不要在建置、測試或建立索引期間刪除。請先結束 Xcode，避免清理時檔案仍持續寫入。",[824,1388,1390],{"id":1389},"刪除-derived-data-能修正所有-xcode-建置錯誤嗎","刪除 Derived Data 能修正所有 Xcode 建置錯誤嗎？",[12,1392,1393],{},"不能。它適合處理過期或狀態不一致的產生資料，但無法修正原始碼錯誤、無效簽署、缺少相依套件或錯誤的建置設定。",[824,1395,1397],{"id":1396},"多久需要清除一次","多久需要清除一次？",[12,1399,1400],{},"只有在能釋放可觀的磁碟空間，或有跡象顯示建置資料已經異常時，才需要清除。每次建置後都刪除正常的 Derived Data 並沒有好處。",[824,1402,1404],{"id":1403},"為什麼清除後資料夾又出現了","為什麼清除後資料夾又出現了？",[12,1406,1407],{},"這是正常現象。只要再次建置專案或建立索引，Xcode 就會重新建立 Derived Data。清除的目的是移除舊的產生資料，不是停用之後的建置快取。",[38,1409,1410],{"id":1410},"參考資料",[46,1412,1413,1420,1427,1434],{},[49,1414,1415],{},[799,1416,1419],{"href":1417,"rel":1418},"https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002FXcode-Release-Notes\u002Fxcode-26-release-notes",[869],"Xcode 26 Release Notes：清除 Derived Data 的疑難排解步驟",[49,1421,1422],{},[799,1423,1426],{"href":1424,"rel":1425},"https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002Ftechnotes\u002Ftn3118-debugging-your-apps-launch-screen",[869],"Apple Technical Note TN3118：Debugging Your App’s Launch Screen（包含 Clean Build Folder 步驟）",[49,1428,1429],{},[799,1430,1433],{"href":1431,"rel":1432},"https:\u002F\u002Fdeveloper.apple.com\u002Flibrary\u002Farchive\u002Fdocumentation\u002FXcode\u002FConceptual\u002FRN-Xcode-Archive\u002FChapters\u002Fxc4_release_notes.html",[869],"Xcode 4 Release Notes：Derived Data 中的工作區索引",[49,1435,1436],{},[799,1437,1438],{"href":932},"Cargo 快取和 target 資料夾有什麼不同？",[12,1440,1441,1442,1445],{},"想先以視覺化方式查看開發工具產生的資料，再決定要移除哪些內容？可以",[799,1443,903],{"href":1444},"\u002Ftw","，在本機執行深度清理。",[906,1447,1448],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":265,"searchDepth":307,"depth":307,"links":1450},[1451,1452,1453,1454,1455,1456,1457,1458,1464],{"id":968,"depth":307,"text":969},{"id":1015,"depth":307,"text":1016},{"id":1109,"depth":307,"text":1110},{"id":1147,"depth":307,"text":1148},{"id":1294,"depth":307,"text":1295},{"id":1348,"depth":307,"text":1349},{"id":1361,"depth":307,"text":1362},{"id":822,"depth":307,"text":822,"children":1459},[1460,1461,1462,1463],{"id":1382,"depth":314,"text":1383},{"id":1389,"depth":314,"text":1390},{"id":1396,"depth":314,"text":1397},{"id":1403,"depth":314,"text":1404},{"id":1410,"depth":307,"text":1410},"\u002Fimages\u002Fblog\u002Fhow-to-clear-xcode-derived-data-safely.webp","Mac 開發者檢查 Xcode Derived Data 建置資料與磁碟空間使用情形","了解 Xcode Derived Data 包含哪些內容、何時可以刪除，以及如何只清除單一專案或整個資料夾而不影響原始碼",{},"2026-08-10T00:00:00+08:00",{"title":943,"description":1467},"tw\u002Fblog\u002Fhow-to-clear-xcode-derived-data-safely",[1473,1474,1475,925],"Xcode Derived Data","Xcode 快取","macOS","article-how-to-clear-xcode-derived-data-safely","rk4i94Gg9t39Z5-PghWhBRHQ1qF8tzBX11fw6BhcCbw",{"id":1479,"title":1480,"author":7,"body":1481,"category":1552,"cover":1553,"coverAlt":1554,"description":1555,"draft":929,"extension":930,"meta":1556,"navigation":310,"path":895,"publishedAt":1557,"seo":1558,"stem":1559,"tags":1560,"translationKey":1564,"updatedAt":933,"__hash__":1565},"articles_tw\u002Ftw\u002Fblog\u002Fwhy-i-built-mangodisk.md","我為什麼開發並開源 MangoDisk",{"type":9,"value":1482,"toc":1545},[1483,1486,1489,1492,1495,1498,1501,1504,1507,1511,1514,1517,1520,1523],[12,1484,1485],{},"身為開發者，我經常安裝工具、測試軟體和加入各種相依套件。專案也會持續產生建置產物、快取與 AI 模型。時間一久，可用的磁碟空間總是在不知不覺間消失。",[38,1487,1488],{"id":1488},"磁碟空間總是不夠用",[12,1490,1491],{},"問題通常不是某一個超大的檔案，而是安裝程式、舊版本、快取、記錄檔和建置輸出散落在磁碟各處，每一項都佔去一些空間。真的想清理時，卻很難一次找齊所有不再需要的內容。",[38,1493,1494],{"id":1494},"清理腳本不是長久之計",[12,1496,1497],{},"一開始，我用自己寫的腳本清理。確實有幫助，但維護起來很麻煩：路徑會改變、規則會過時，一個小錯誤還可能刪到不該刪的檔案。每次調整前，我都得再次確認腳本究竟會動到哪些內容。",[38,1499,1500],{"id":1500},"我想要的工具其實很簡單",[12,1502,1503],{},"我試過不少磁碟清理工具，卻始終沒有找到真正適合自己的。有些需要訂閱，有些塞滿我用不到的功能，還有些會要求註冊帳號，或把資料傳送到遠端服務。",[12,1505,1506],{},"我想要的其實很簡單：告訴我儲存空間都用到哪裡，讓我先確認哪些內容已經不需要，再進行清理。",[38,1508,1510],{"id":1509},"所以我開發了-mangodisk","所以我開發了 MangoDisk",[12,1512,1513],{},"MangoDisk 不需要帳號，也沒有付費功能。檔案掃描與清理都在本機進行，不會上傳你的檔案或掃描結果；執行清理時也不需要網路連線。",[12,1515,1516],{},"它專注在一件事：協助你找出不再需要的檔案，確認後安心移除，騰出磁碟空間。",[38,1518,1519],{"id":1519},"為什麼選擇開源",[12,1521,1522],{},"我希望每個人都能看見 MangoDisk 的運作方式，也能一起讓它變得更好。更重要的是，我希望遇到相同問題的人不用重複經歷搜尋與試錯，就能使用一套簡單、透明的磁碟清理工具。",[12,1524,1525,1530,1531,782,1534,1538,1539,1541,1542,601],{},[799,1526,1529],{"href":1527,"rel":1528},"https:\u002F\u002Fgithub.com\u002Fharry0703\u002FMangoDisk",[869],"MangoDisk 的原始碼與清理規則","都公開在 GitHub。想了解刪除前的確認流程與安全原則，可以參考",[799,1532,1533],{"href":818},"安全性指南",[799,1535,1537],{"href":1536},"\u002Ftw\u002Fdocs\u002Fgetting-started","開始使用","整理了基本操作；開發者也可以閱讀",[799,1540,890],{"href":889},"，或先了解 ",[799,1543,1544],{"href":932},"Cargo 快取與 target 資料夾的差異",{"title":265,"searchDepth":307,"depth":307,"links":1546},[1547,1548,1549,1550,1551],{"id":1488,"depth":307,"text":1488},{"id":1494,"depth":307,"text":1494},{"id":1500,"depth":307,"text":1500},{"id":1509,"depth":307,"text":1510},{"id":1519,"depth":307,"text":1519},"MangoDisk 開發故事","\u002Fimages\u002Fblog\u002Fwhy-i-built-mangodisk.webp","從雜亂檔案到清楚掌握磁碟空間的 MangoDisk 開發故事插圖","從磁碟空間不斷告急、清理腳本難以維護，到親手打造一款簡單透明的開源磁碟清理工具",{},"2026-08-01T10:00:00+08:00",{"title":1480,"description":1555},"tw\u002Fblog\u002Fwhy-i-built-mangodisk",[1561,1562,1563],"MangoDisk","開源軟體","磁碟清理","article-why-i-built-mangodisk","REoeaIilWxZ8OHW4EPv9Q05OqpiyjY1nwsxaBfKtzYY",1786706048525]