วิธีเปิดใช้งานและใช้งาน pnpm ใน ServBay
pnpm
เป็นเครื่องมือจัดการแพ็กเกจ Node.js สมัยใหม่ที่ทรงประสิทธิภาพ ออกแบบมาเพื่อตอบโจทย์และแก้ปัญหาของตัวจัดการแพ็กเกจแบบเดิม (เช่น npm
และ yarn
) ที่มักพบเจอในการจัดการ dependencies ด้วยการนำระบบไฟล์แบบ content-addressable และการใช้งาน hard link กับ symbolic link มาใช้ pnpm
จึงช่วยลดการใช้พื้นที่ดิสก์ได้อย่างมาก และเร่งความเร็วในการติดตั้งแพ็กเกจขึ้นได้อย่างชัดเจน สำหรับนักพัฒนา Node.js ที่ใช้ ServBay การเรียนรู้การใช้ pnpm
จะช่วยยกระดับประสิทธิภาพในการจัดการ dependencies ของโปรเจกต์
แพ็กเกจ Node.js ที่มาพร้อมกับ ServBay ได้มีการติดตั้ง corepack
ซึ่งเป็นเครื่องมือทดลองที่พัฒนาโดยทีมงาน Node.js อย่างเป็นทางการ ช่วยให้สามารถจัดการและสลับใช้งานตัวจัดการแพ็กเกจเฉพาะเวอร์ชันของแต่ละโปรเจกต์ได้ (อย่างเช่น npm
, yarn
, pnpm
) โดยปกติ หลังจากติดตั้ง Node.js ของ ServBay แล้ว คุณสามารถใช้คำสั่ง corepack
เพื่อเปิดใช้งาน pnpm
ได้ทันที
การเปิดใช้งาน pnpm
หากคุณพบว่าไม่สามารถใช้คำสั่ง pnpm
ได้โดยตรง สาเหตุส่วนใหญ่มักเกิดจากยังไม่ได้เปิดใช้งานผ่าน corepack
คุณสามารถเปิดใช้งานได้ตามขั้นตอนต่อไปนี้:
เปิดแอป Terminal
พิมพ์คำสั่งนี้เพื่อเปิดใช้งาน
pnpm
ผ่านcorepack
:bashcorepack enable pnpm
1หากคำสั่งทำงานสำเร็จ ปกติแล้วจะไม่มีข้อความใด ๆ แสดงออกมา นั่นหมายความว่า
corepack
ได้เพิ่มคำสั่งpnpm
ให้ใช้งานบนระบบแล้วเรียบร้อยตรวจสอบว่า
pnpm
เปิดใช้งานสำเร็จพร้อมเช็คเวอร์ชัน:bashpnpm -v
1คำสั่งนี้ควรแสดงเวอร์ชันของ
pnpm
ที่ใช้งานอยู่ เช่นbash9.1.0
1หากเห็นหมายเลขเวอร์ชันใน Terminal แสดงว่า
pnpm
พร้อมสำหรับการใช้งานแล้ว
ข้อความแจ้งเตือนการดาวน์โหลดโดย corepack
ขณะใช้งานคำสั่ง pnpm
หากคุณเห็นข้อความแจ้งเตือนในลักษณะนี้ นั่นหมายความว่า corepack
กำลังดาวน์โหลดหรืออัปเดตเวอร์ชันเฉพาะของ pnpm
ให้คุณตามปกติ กลไกนี้มีไว้เพื่อให้ระบบมั่นใจว่าโปรเจกต์ของคุณจะใช้เวอร์ชันที่ตรงกับที่กำหนดหรืออัปเดตล่าสุดของ pnpm
bash
$ pnpm -v
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.0.6.tgz
? Do you want to continue? [Y/n]
1
2
3
2
3
กรอก Y
แล้วกดปุ่ม Enter เพื่อให้ corepack
ดาวน์โหลดและทำงานต่อไป เมื่อดาวน์โหลดเสร็จสิ้น คำสั่งจะถูกดำเนินการตามปกติและจะแสดงหมายเลขเวอร์ชัน (หรือผลลัพธ์ของคำสั่ง pnpm
ที่คุณป้อน)
จุดเด่นสำคัญของ pnpm พร้อมตัวอย่างการใช้งาน
pnpm
ถูกออกแบบมาเพื่อจัดการ dependencies อย่างมีประสิทธิภาพ โดยจะแพ็กเกจทั้งหมดไว้ในที่เก็บส่วนกลางแบบ content-addressable ซึ่งแต่ละเวอร์ชันของแพ็กเกจจะถูกเก็บเพียงหนึ่งครั้งเท่านั้น เมื่อโปรเจกต์ต้องการ dependency ใด ๆ pnpm
จะสร้าง hard link จากที่เก็บกลางไปยังโปรเจกต์นั้น และภายในโฟลเดอร์ node_modules
ของโปรเจกต์ จะเป็นโครงสร้างแฟลตด้วย symbolic link ซึ่งต่างจากปัญหา "phantom dependency" ของ npm
เพราะ pnpm
จำกัดเฉพาะ dependencies ที่ถูกประกาศเท่านั้นจึงจะถูกเข้าถึงได้โดยตรง
แนวทางนี้มีข้อดีที่เด่นชัดดังนี้:
- ประหยัดพื้นที่ดิสก์: หลายโปรเจกต์สามารถใช้ไฟล์ dependency ที่เวอร์ชันเดียวกันร่วมกันได้โดยไม่ซ้ำซ้อน
- ติดตั้งเร็ว: ส่วนใหญ่ไฟล์ dependencies จะมีในที่เก็บกลางแล้ว การติดตั้งจึงเป็นแค่การสร้าง link ไม่ต้องดาวน์โหลดหรือคัดลอกซ้ำ
- โครงสร้าง dependencies ที่รัดกุม: แก้ไขปัญหา phantom dependency ทำให้ dependency ของโปรเจกต์โปร่งใสและควบคุมง่าย
ตัวอย่างคำสั่งที่ใช้งานบ่อยกับ pnpm
ใน ServBay มีดังนี้:
สมมุติว่าโปรเจกต์ของคุณอยู่ในโฟลเดอร์ย่อยของเว็บไซต์ ServBay เช่น /Applications/ServBay/www/my-servbay-app
ติดตั้ง dependencies ของโปรเจกต์
เข้าไปยังไดเรกทอรีโปรเจกต์ แล้วใช้คำสั่ง pnpm install
เพื่อติดตั้ง dependencies ทั้งหมดตามที่กำหนดใน package.json
:
bash
cd /Applications/ServBay/www/my-servbay-app
pnpm install
1
2
2
pnpm
จะตรวจสอบที่เก็บกลาง ดาวน์โหลดแพ็กเกจที่ยังไม่มี จากนั้นสร้าง link ไว้ที่โฟลเดอร์ node_modules
ของโปรเจกต์
เพิ่ม dependency ใหม่
เพื่อเพิ่ม dependency ใหม่ให้โปรเจกต์ เช่น lodash
:
bash
pnpm add lodash
1
คำสั่งนี้จะดาวน์โหลด lodash
(หากยังไม่มีในที่เก็บกลาง) สร้าง link อัตโนมัติ และอัปเดตไฟล์ package.json
กับ pnpm-lock.yaml
ทันที
ลบ dependency ออกจากโปรเจกต์
เมื่อต้องการลบ dependency ที่ไม่จำเป็น เช่น lodash
:
bash
pnpm remove lodash
1
dependency จะถูกลบออกจากโปรเจกต์และอัปเดตไฟล์ package.json
กับ pnpm-lock.yaml
โดยอัตโนมัติ
รันสคริปต์
pnpm
ยังสามารถใช้รันสคริปต์ที่ประกาศใน scripts
ของ package.json
ได้ด้วย
bash
pnpm run dev
# หรือเขียนแบบย่อว่า
pnpm dev
1
2
3
2
3
รันคำสั่งในแพ็กเกจ (pnpx)
เหมือนกับ npx
pnpm
มี pnpx
(หรือใช้ pnpm exec
) สำหรับรันคำสั่งที่ติดตั้งไว้ใน node_modules/.bin
ของโปรเจกต์โดยไม่ต้องติดตั้งแบบ global:
bash
pnpm exec webpack --version
# หรือเขียนแบบย่อว่า
pnpx webpack --version
1
2
3
2
3
สรุป
เพียงแค่รันคำสั่ง corepack enable pnpm
คุณก็สามารถเปิดใช้งาน pnpm
บนสภาพแวดล้อม Node.js ของ ServBay ได้ทันที การใช้ pnpm
ในการจัดการ dependencies อย่างมีประสิทธิภาพช่วยให้คุณติดตั้ง dependencies ได้เร็วขึ้น ประหยัดพื้นที่ดิสก์ และพัฒนางานได้คล่องตัวมากขึ้น สำหรับผู้ที่ต้องการประสบการณ์การพ 개발ระดับมืออาชีพบน ServBay pnpm
คือเครื่องมือที่แนะนำอย่างยิ่ง