4 พ.ค. เวลา 05:56 • การศึกษา

Yarn คืออะไร

โดย
คงไม่มีนักพัฒนา JavaScript คนไหนที่ไม่รู้จัก npm แต่สำหรับใครที่เคยทำโปรเจกต์ขนาดใหญ่ คงเคยเจอกับฝันร้าย อย่างการติดตั้งที่ช้าจนต้มมาม่ารอได้ หรือปัญหา Dependencies ที่ไม่เสถียร รวมถึงโฟลเดอร์ node_modules ที่ใหญ่จนเหมือนหลุมดำดูดพื้นที่ฮาร์ดดิสก์
Yarn ถือกำเนิดขึ้นในปี 2016 โดย Meta (Facebook) เพื่อแก้ปัญหาเหล่านี้โดยเฉพาะ มันไม่ได้เป็นแค่ตัวก๊อปปี้ของ npm แต่เป็นการสร้างมาตรฐานใหม่ที่เน้นความเร็ว (Parallel Download) และ ความแม่นยำ (Lockfile)
ในปี 2026 นี้ เราก้าวมาถึงยุคของ Yarn Berry (v4.x) ซึ่งเป็นการ Rewrite ครั้งใหญ่ที่กล้าตัด node_modules ทิ้งไป แล้วแทนที่ด้วยสถาปัตยกรรม Plug'n'Play (PnP) ซึ่งแม้จะดูแปลกใหม่จนวงการแตกตื่น แต่ก็นับว่าเป็นทางออกที่เด็ดขาดในการแก้ปัญหาที่ต้นตอครับ
  • ​Yarn คืออะไร?
Yarn (Yet Another Resource Negotiator) คือ ตัวจัดการแพ็กเกจ (Package Manager) สำหรับระบบนิเวศ JavaScript โดยมีหน้าที่หลักคือ
1) ติดตั้ง : ดาวน์โหลด Libraries ที่โปรเจกต์ต้องการ (เช่น React, Vite)
2) ควบคุม : จัดการเวอร์ชันของโค้ดให้ตรงกันทั้งทีมผ่านไฟล์ yarn.lock
3) เพิ่มสปีด : ลดเวลาในการทำงานซ้ำๆ ด้วยระบบ Cache อัจฉริยะ
ความเจ๋งของ Yarn รุ่นใหม่คือการเลิกใช้โฟลเดอร์ node_modules ที่วุ่นวาย แล้วเปลี่ยนมาใช้ไฟล์ Zip และ ระบบ Mapping แทนคล้ายกับการมีสารบัญด่วน ทำให้ Node.js รู้ตำแหน่งโค้ดได้ทันทีโดยไม่ต้องรื้อค้นทั้งชั้นหนังสือ
  • ​Yarn ทำงานอย่างไร?
การทำงานของ Yarn แบ่งออกเป็น 2 ยุคสมัยที่ชัดเจน
1) ยุค Yarn Classic (1.x)
ยุคนี้ยังคงใช้ node_modules เหมือน npm แต่ปรับปรุงให้ดีขึ้น:
⚪ Parallel Downloads
โหลดหลายแพ็กเกจพร้อมกัน ไม่ต้องรอคิวทีละตัว
⚪ Global Cache
ถ้าเคยโหลดมาแล้วครั้งหนึ่ง เครื่องจะจำไว้ครั้งหน้าไม่ต้องโหลดจากเน็ตใหม่
⚪ yarn.lock
กุญแจสำคัญที่ทำให้ทุกคนในทีมได้โค้ดเวอร์ชันเดียวกันเป๊ะๆ
2) ยุค Yarn Berry (4.x - ปัจจุบัน)
⚪ Plug'n'Play (PnP):
ไม่สร้าง node_modules อีกต่อไป แต่จะสร้างไฟล์ .pnp.cjs เป็นแผนที่ บอกทางแทน ช่วยประหยัดพื้นที่ดิสก์มหาศาล
⚪ Zero-Installs
เพราะไม่ต้องคัดลอกไฟล์ลงดิสก์ซ้ำๆ เราสามารถตั้งค่าให้โปรเจกต์พร้อมรันได้ทันทีที่โหลดมาจาก Git โดยแทบไม่ต้องสั่ง install เลย
⚪ Workspaces
ระบบจัดการหลายโปรเจกต์ในที่เดียว (Monorepo) ที่ทรงพลังที่สุดตัวหนึ่งในปัจจุบัน
  • ​ประเภทของ Yarn
⚪ Yarn Classic (v1)
โหมดมรดกที่ยังใช้ node_modules เหมาะสำหรับโปรเจกต์เก่า หรือ Tooling บางตัว (เช่น React Native รุ่นเก่า) ที่ยังไม่รองรับระบบ PnP
⚪ Yarn Berry (v4)
โหมดทันสมัยที่เน้น PnP เป็นค่าเริ่มต้น ออกแบบมาเพื่อโปรเจกต์ยุคใหม่ที่ต้องการความเร็ว และ ความสะอาดของโครงสร้างไฟล์
💡 หมายเหตุ: หากโปรเจกต์ไม่รองรับ PnP จริงๆ Yarn Berry ก็มี Plugin ให้กลับไปสร้าง node_modules ได้เช่นกัน
  • ​ประโยชน์ของ Yarn
✅ ความเร็วเหนือชั้น (Speed)
โดยเฉพาะการติดตั้งซ้ำ (Warm Install) ที่ทำได้เร็วกว่า npm หลายเท่า
✅ ความแม่นยำสูง (Deterministic) ป้องกันปัญหา "เครื่องเพื่อนรันได้ เครื่องเรารันพัง" ได้อย่างยอดเยี่ยม
✅ ราชาแห่ง Monorepo
จัดการโปรเจกต์ย่อยๆ จำนวนมากใน Repository เดียวได้อย่างเป็นระบบผ่านระบบ Workspaces
✅ ความปลอดภัย (Security)
มีระบบตรวจสอบ Checksums และ คำสั่ง yarn audit ที่เข้มงวด
  • ​ความรู้พื้นฐานที่ควรมีก่อนเริ่ม
1) Node.js & npm
เข้าใจการทำงานเบื้องต้นของสภาพแวดล้อม JavaScript
2) Command Line
คุ้นเคยกับคำสั่งพื้นฐานใน Terminal (cd, ls, path)
3) JavaScript Modules
เข้าใจพื้นฐานการ import และ export โค้ด
4) Semantic Versioning (SemVer) เข้าใจความหมายของเลขเวอร์ชัน และสัญลักษณ์อย่าง ^ หรือ ~
  • ​ตัวอย่างการใช้งาน
1) เริ่มต้นใช้งาน
ใน Node.js เวอร์ชันใหม่ คุณสามารถเปิดใช้ Yarn ได้ผ่าน Corepack:
```bash
corepack enable
yarn init -y
yarn set version stable
# อัปเกรดเป็น v4 ทันที
```
2) การเพิ่ม Dependency
```bash
yarn add react
# ติดตั้งปกติ
yarn add -D typescript
# ติดตั้งเป็น Dev Dependency
```
3) การจัดการ Monorepo
หากคุณมีโปรเจกต์หลายตัวในที่เดียว สามารถรันคำสั่งพร้อมกันได้ง่ายๆ
```bash
# รัน Build ทุกโปรเจกต์ใน Repo พร้อมกัน
yarn workspaces foreach -A run build
```
✏️ Shoper Gamer
  • ​NPM คืออะไร 👇
  • ​NodeJS คืออะไร 👇
Credit :
👇
  • ​https://dev.to/nobody-99/-what-is-yarn--3647
  • ​https://yarnpkg.com/getting-started
  • ​https://www.geeksforgeeks.org/node-js/difference-between-npm-and-yarn/
  • ​https://www.digitalocean.com/community/tutorials/how-to-install-and-use-the-yarn-package-manager-for-node-js
โฆษณา