• คณะกรรมการกำกับดูแลทางเทคนิค (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 มาให้โดยค่าเริ่มต้น
  • หากจำเป็น ต้องติดตั้งเองด้วยคำสั่งต่อไปนี้:
    • npm install -g corepack
  • โปรเจ็กต์ที่ใช้ Corepack จำเป็นต้องอัปเดตเอกสารและเวิร์กโฟลว์
  • อย่างไรก็ตาม การตัดสินใจครั้งนี้ไม่ได้หมายความว่า Corepack จะยุติการซัพพอร์ต แต่หมายถึงเพียงการถูกถอดออกจาก Node.js เท่านั้น
  • จะยังมีการบำรุงรักษา Corepack ต่อไปจนกว่า Node.js 24.x จะเข้าสู่ EOL

บริบททางประวัติศาสตร์ของ Node.js และแพ็กเกจแมเนเจอร์

  • ในอดีตก็เคยมีข้อถกเถียงเกี่ยวกับสิ่งที่ควรรวมมากับ Node.js และการรวม npm ก็เป็นหนึ่งในนั้น
  • การมาถึงของแพ็กเกจแมเนเจอร์ทางเลือกอย่าง Yarn และ pnpm ทำให้มีตัวเลือกที่หลากหลายมากขึ้น
  • การถอด Corepack ออกเป็นส่วนหนึ่งของความพยายามทำให้ชุดแจกจ่ายของ Node.js กระชับขึ้น
  • สิ่งนี้ยังสอดคล้องกับแนวโน้มของอีโคซิสเต็มภาษาอื่น ๆ ที่แยกรันไทม์ออกจากแพ็กเกจแมเนเจอร์
  • นักพัฒนาควรเตรียมสภาพแวดล้อมการพัฒนาโดยคำนึงว่าต่อไป Node.js จะไม่รวม Corepack มาให้

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น