- คณะกรรมการกำกับดูแลทางเทคนิค (TSC) ของ Node.js ลงมติอย่างเป็นทางการว่าจะไม่รวม Corepack มากับการแจกจ่าย Node.js อีกต่อไป
- มีผลตั้งแต่ Node.js 25 เป็นต้นไป และใน Node.js 24 หรือต่ำกว่านั้นจะยังคงมีให้ใช้ในฐานะฟีเจอร์ทดลอง
บทบาทและข้อจำกัดของ Corepack
- Corepack เป็นเครื่องมือทดลองที่เปิดตัวใน Node.js 16.9.0 ช่วยให้สามารถใช้แพ็กเกจแมเนเจอร์อย่าง Yarn และ pnpm ได้โดยไม่ต้องติดตั้งแยก
- มันช่วยให้โปรเจ็กต์สามารถบังคับใช้เวอร์ชันของแพ็กเกจแมเนเจอร์ที่กำหนดได้
- อย่างไรก็ตาม เนื่องจากผู้ใช้รับรู้ถึงมันน้อยและมีความเข้าใจคลาดเคลื่อนเกี่ยวกับจุดประสงค์ จึงไม่ได้ถูกใช้อย่างแพร่หลาย
- ยังมีความกังขาต่อการนำแพ็กเกจแมเนเจอร์ซึ่งควรทำงานแยกจากรันไทม์ มารวมไว้ใน Node.js
กระบวนการก่อนการถอด Corepack ออก
- การหารือเกี่ยวกับอนาคตของ Corepack ดำเนินต่อเนื่องมาหลายปี และในเดือนพฤศจิกายน 2023 ข้อเสนอให้เปิดใช้งานเป็นค่าเริ่มต้นได้ก่อให้เกิดข้อถกเถียง
- ในเดือนกุมภาพันธ์ 2024 มีการแสดงความกังวลว่า Corepack อาจถูกใช้เป็นวิธีแยกการผูกติดกันระหว่าง npm กับ Node.js
- ในเดือนมีนาคม 2024 มีการย้ำชัดว่า npm จะยังคงรวมมากับ Node.js ต่อไป พร้อมกับที่ความเป็นไปได้ในการถอด Corepack ก็เริ่มเด่นชัดขึ้น
- TSC ได้มอบหมายการตัดสินใจที่เกี่ยวข้องให้กับ Package Maintenance Working Group (PMWG)
- PMWG เสนอโรดแมปการถอดออกดังนี้:
- เน้นเครื่องมือจัดการเวอร์ชันอย่าง nvm และ fnm บนหน้าดาวน์โหลดของ Node.js
- แยกเอกสารของ Corepack ออกจากเอกสาร API ของ Node.js และย้ายไปยังรีโพซิทอรีแยกต่างหาก
- ถอด Corepack ออกจากชุดแจกจ่ายของ Node.js ตั้งแต่เมเจอร์รีลีสถัดไป
- โรดแมปนี้ได้รับการสนับสนุนอย่างมากภายใน PMWG และนำไปสู่การลงมติขั้นสุดท้าย
เหตุผลของการตัดสินใจถอด Corepack ออก
- อัตราการใช้งานต่ำ: นักพัฒนาจำนวนมากติดตั้งและใช้แพ็กเกจแมเนเจอร์ที่ตนชอบโดยตรง แทนที่จะใช้ Corepack
- ข้อกังวลด้านการแจกจ่าย: มีความเห็นว่าการรวม Corepack ไว้ในไบนารีของ Node.js นั้นไม่จำเป็น
- ปัญหาด้านการบำรุงรักษาระยะยาว: หาก Corepack แยกออกจาก Node.js แพ็กเกจแมเนเจอร์ก็จะพัฒนาได้อย่างอิสระมากขึ้น
- ผลการลงมติคือข้อเสนอให้ "ค่อย ๆ ถอดออกในอนาคต" ได้รับการรับรอง
- ข้อเสนออื่น ๆ เช่น คงสถานะปิดไว้เป็นค่าเริ่มต้น ไม่ได้รับการสนับสนุนเพียงพอ
- นักพัฒนาบางส่วนมองว่าการตัดสินใจนี้เป็นการถอยหลัง เพราะพวกเขาใช้ Corepack แทน npm เพื่อใช้งาน pnpm
- ฝั่ง Node.js เน้นย้ำว่า Corepack ไม่เคยถูกวางให้เป็นฟีเจอร์ถาวรตั้งแต่แรก และการดูแลรักษาแบบแยกส่วนเป็นแนวทางที่เหมาะสมกว่า
การเปลี่ยนแปลงต่อจากนี้
- ในอนาคต Node.js จะไม่รวม Corepack มาให้โดยค่าเริ่มต้น
- หากจำเป็น ต้องติดตั้งเองด้วยคำสั่งต่อไปนี้:
- โปรเจ็กต์ที่ใช้ Corepack จำเป็นต้องอัปเดตเอกสารและเวิร์กโฟลว์
- อย่างไรก็ตาม การตัดสินใจครั้งนี้ไม่ได้หมายความว่า Corepack จะยุติการซัพพอร์ต แต่หมายถึงเพียงการถูกถอดออกจาก Node.js เท่านั้น
- จะยังมีการบำรุงรักษา Corepack ต่อไปจนกว่า Node.js 24.x จะเข้าสู่ EOL
บริบททางประวัติศาสตร์ของ Node.js และแพ็กเกจแมเนเจอร์
- ในอดีตก็เคยมีข้อถกเถียงเกี่ยวกับสิ่งที่ควรรวมมากับ Node.js และการรวม npm ก็เป็นหนึ่งในนั้น
- การมาถึงของแพ็กเกจแมเนเจอร์ทางเลือกอย่าง Yarn และ pnpm ทำให้มีตัวเลือกที่หลากหลายมากขึ้น
- การถอด Corepack ออกเป็นส่วนหนึ่งของความพยายามทำให้ชุดแจกจ่ายของ Node.js กระชับขึ้น
- สิ่งนี้ยังสอดคล้องกับแนวโน้มของอีโคซิสเต็มภาษาอื่น ๆ ที่แยกรันไทม์ออกจากแพ็กเกจแมเนเจอร์
- นักพัฒนาควรเตรียมสภาพแวดล้อมการพัฒนาโดยคำนึงว่าต่อไป Node.js จะไม่รวม Corepack มาให้
ยังไม่มีความคิดเห็น