Clean up your dev environment you filthy animal!
ผม ชอบทำความสะอาดซอฟต์แวร์? PLZ! ลบ Duplicate หา OS Cruft เก่า แต่ไม่มีอะไรทำความสะอาดเครื่อง Developer ได้ดีเท่าตัวผมเอง
แน่นอน สำหรับการบำรุงรักษาทั่วไป ไม่มีอะไรเอาชนะ CleanMyMac แต่ปีละครั้ง นักพัฒนาควรรันคำสั่ง Manual บ้าง เพราะ Auto-cleaners ไม่รู้จักดูแลเครื่อง Developer
ก่อนเริ่ม ดู Free Space
เริ่มต้น:
ของผมรายงาน 132.2 GB ก่อนล้าง เริ่มกันเลย!
ผู้ใช้ Mac Homebrew
ข้อนี้ปกติลดได้หลายร้อย MB อัปเดต อัปเกรด และล้างไฟล์ที่ไม่ใช้
Update แล้วลบ Formulae เก่าและโฟลเดอร์:
brew update && brew upgrade && brew cleanup
อาจเคยใช้ brew prune แต่มัน Deprecated แล้ว Cleanup จัดการให้!
General Brew Maintenance
Brew ระบบซับซ้อน ไม่มีใครรู้จักมากกว่า Maintainers รัน brew doctor ได้ Chores เพิ่มเติมเพื่อให้รันได้ถูกต้อง
ผู้ใช้ Git
Git ดี แต่ไม่งอที่จะทิ้ง Merged Branches เยอะบน Local! Branches นั้นไม่มีประโยชน์แล้ว และบ้างก็ทำ Naming Conflicts สำหรับ Branch ใหม่
ลบ Merged Branches ทั้งหมดจากโปรเจกต์เดียว:
git branch --merged master | grep -v "\* master" | xargs -n 1 git branch -d
WOW คำสั่งยาวมากสำหรับโปรเจกต์เดียว! ทำให้ยากขึ้นอีก ?
โค้ดนี้จะ CD เข้าโฟลเดอร์ทุกตัวใน Current Directory แล้วรันคำสั่งลบ Merged Branches ทุกโปรเจกต์!
for d in */; do cd $d; echo WORKING ON $d; git branch --merged master | grep -v "\* master" | xargs -n 1 git branch -d; cd ..; done
JavaScript Developers
ลบ node_modules เก่าที่ฝังในโปรเจกต์
คำสั่งต่อไปหาโฟลเดอร์ node_modules ที่เก่ากว่า 120 วัน และลบ หมายถึงต้อง npm i หรือ yarn ใหม่ในโปรเจกต์เก่า นี่มักเป็นการล้างพื้นที่ใหญ่ที่สุด!
ลบ node_modules เก่ากว่า 4 เดือน:
find . -name "node_modules" -type d -mtime +120 | xargs rm -rf
หากรู้สึก Aggressive ลบ node_modules ทั้งหมด และติดตั้งใหม่เมื่อต้องการ โดยเอา flag mtime ออก
ลบ node_modules ทั้งหมด:
find . -name "node_modules" -type d | xargs rm -rf
ลบเวอร์ชัน Node เก่า
ลบเวอร์ชัน Node เก่า ขึ้นกับ Node Manager ผมใช้ n
จึงง่าย โปรดดู Uninstall สำหรับ Version Manager ของคุณ
ใช้ n?
List เวอร์ชันทั้งหมด + ตัวที่ติดตั้งด้วยn lsแล้วลบด้วยn rm <version>
ใช้ nvm?
List เวอร์ชันที่ติดตั้งด้วยnvm lsแล้วลบด้วยnvm uninstall <version>
ใช้ asdf?
List เวอร์ชันที่ติดตั้งด้วยasdf list nodejsแล้วลบด้วยasdf uninstall nodejs <version>
Ruby Developers
ล้างเวอร์ชัน Gem เก่าด้วยคำสั่ง cleanup หากกังวล ให้ดูผลลัพธ์ก่อนด้วย dryrun
gem cleanup --dryrun
เมื่อมั่นใจ ให้เอา dryrun
ออก และรันจริง
gem cleanup
ลบเวอร์ชัน Ruby เก่า
ขึ้นกับ Ruby Version Manager โดยเฉพาะ ทำ 2 ตัวยอดนิยม
ใช้ rbenv?
List เวอร์ชันที่ติดตั้งด้วยrbenv versionsแล้วลบด้วยrbenv uninstall <version>
ใช้ rvm?
List เวอร์ชันที่ติดตั้งด้วยrvm listแล้วลบด้วยrvm uninstall <version>
Xcode Developers
Xcode ชอบ Cache ไฟล์ทั่วเครื่อง บางไฟล์ใหญ่หลายร้อย MB มาล้างกัน และถ้าต้อง Rebuild ใหม่ก็ไม่เป็นไร!
ล้าง CocoaPod Caches:
rm -rf "${HOME}/Library/Caches/CocoaPods"
ลบ Xcode Simulators เก่า:
xcrun simctl delete unavailable
ล้าง Archives, Logs, Derived Data ต่างๆ:
rm -rf ~/Library/Developer/Xcode/Archives
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ~~/Library/Developer/Xcode/iOS Device Logs/
เช็ค Connected Device Info ใน ~/Library/Developer/Xcode/iOS Device Logs/ ลบอะไรเกี่ยวกับ iOS Devices เก่าที่เคยเชื่อม
Docker
ลบ Volumes ทั้งหมดที่ไม่ถูกใช้โดย Container อย่างน้อย 1 ตัว เพราะ... зачем เก็บไว้ทำไม?!
อาจใหญ่มาก หรืออาจไม่ลบอะไรเลย แต่ Worth a run!
ลบ Local Volumes ที่ไม่ใช้:
docker volume prune
RESULTS?!
อย่าลืมว่างถังขยะ และเช็คผลลัพธ์!
30 GIGS! ดึงออกมาจากเครื่องของผม! คุณล่ะ?
ผลลัพธ์ของคุณอาจต่างมาก แต่ผมอยากรู้ Comment หรือ Tweet มาบอกผล และจุดอื่นๆ ที่แนะนำให้ล้าง ผมจะเพิ่มเข้าไปในบทความ
Gant Laborde คือ Chief Technology Strategist ที่ Infinite Red นักเขียนหนังสือ อาจารย์พิเศษ วงการพูดทั่วโลก และ Mad Scientist ระหว่างฝึก Clap/Follow/Tweet หรือเยี่ยมเขาที่ Conference
5 Things that Suck about Remote Work
The Pitfalls of Remote Work + Proposed Solutions shift.infinite.red
React Native vs. Native
Should I learn React Native or Native? shift.infinite.red