Corepack เป็นสคริปต์ Node.js ที่พึ่งพารันไทม์เป็นศูนย์ ซึ่งทำหน้าที่เป็นสะพานเชื่อมระหว่างโปรเจ็กต์ Node.js และตัวจัดการแพ็คเกจที่มีจุดประสงค์เพื่อใช้ในระหว่างการพัฒนา ในทางปฏิบัติ Corepack ช่วยให้คุณใช้ Yarn, npm และ pnpm ได้โดยไม่ต้องติดตั้ง
Corepack ได้รับการเผยแพร่ตามค่าเริ่มต้นกับ Node.js เวอร์ชันล่าสุดทั้งหมด เรียกใช้ corepack enable
เพื่อติดตั้ง Yarn และไบนารี pnpm ที่จำเป็นบนเส้นทางของคุณ
ขั้นแรกให้ถอนการติดตั้ง Yarn และไบนารี pnpm ทั่วโลกของคุณก่อน (เพียงปล่อยไว้ npm) โดยทั่วไป คุณจะทำได้โดยการรันคำสั่งต่อไปนี้:
npm Uninstall -g Yarn pnpm# ก็น่าจะเพียงพอแล้ว แต่ถ้าคุณติดตั้ง Yarn โดยไม่ผ่าน npm อาจจะ# น่าเบื่อกว่านั้น - ตัวอย่างเช่น คุณอาจต้องรัน `brew Uninstall Yarn` ด้วยเช่นกัน
จากนั้นติดตั้ง Corepack:
ติดตั้ง npm -g corepack
เรารับทราบถึงความยุ่งยากและค่าใช้จ่ายในการใช้ npm เพื่อติดตั้ง Corepack ซึ่งอย่างน้อยก็เป็นส่วนหนึ่งของสาเหตุที่ตัวเลือกที่ต้องการคือการใช้เวอร์ชัน Corepack ที่เผยแพร่พร้อมกับ Node.js เอง
ดูที่ CONTRIBUTING.md
เพียงใช้ตัวจัดการแพ็คเกจของคุณตามปกติ รัน yarn install
ในโครงการ Yarn pnpm install
ในโปรเจ็กต์ pnpm และ npm
ในโปรเจ็กต์ npm Corepack จะรับสายเหล่านี้ และขึ้นอยู่กับสถานการณ์:
หากมีการกำหนดค่าโปรเจ็กต์ในเครื่องสำหรับตัวจัดการแพ็คเกจที่คุณใช้ Corepack จะดาวน์โหลดและแคชเวอร์ชันล่าสุดที่เข้ากันได้
หากโปรเจ็กต์ในเครื่องได้รับการกำหนดค่าสำหรับตัวจัดการแพ็คเกจอื่น Corepack จะขอให้คุณรันคำสั่งอีกครั้งโดยใช้ตัวจัดการแพ็คเกจที่ถูกต้อง - เพื่อหลีกเลี่ยงความเสียหายของส่วนการติดตั้งของคุณ
หากไม่มีการกำหนดค่าโปรเจ็กต์ในเครื่องสำหรับตัวจัดการแพ็คเกจใดๆ Corepack จะถือว่าคุณรู้ว่าคุณกำลังทำอะไรอยู่ และจะใช้ตัวจัดการแพ็คเกจเวอร์ชันใดก็ตามที่ปักหมุดไว้เป็น "known good release" ตรวจสอบส่วนที่เกี่ยวข้องสำหรับรายละเอียดเพิ่มเติม
ตั้งค่าตัวจัดการแพ็คเกจของคุณด้วยฟิลด์ packageManager
ใน package.json
:
{ "packageManager": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"}
ในที่นี้ yarn
คือชื่อของตัวจัดการแพ็คเกจที่ระบุในเวอร์ชัน 3.2.3
พร้อมด้วยแฮช SHA-224 ของเวอร์ชันนี้สำหรับการตรวจสอบ จำเป็นต้องมี packageManager@xyz
แฮชนั้นเป็นทางเลือก แต่ขอแนะนำเป็นอย่างยิ่งว่าเป็นแนวทางปฏิบัติด้านความปลอดภัย ค่าที่อนุญาตสำหรับตัวจัดการแพ็คเกจคือ yarn
, npm
และ pnpm
คุณยังสามารถระบุ URL ให้กับไฟล์ .js
(ซึ่งจะถูกตีความว่าเป็นโมดูล CommonJS) หรือไฟล์ .tgz
(ซึ่งจะถูกตีความว่าเป็นแพ็คเกจ และฟิลด์ "bin"
ของ package.json
จะถูกใช้เพื่อ กำหนดไฟล์ที่จะใช้ในไฟล์เก็บถาวร)
{ "packageManager": "yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b"}
เมื่อรัน Corepack ภายในโปรเจ็กต์ที่ไม่แสดงรายการตัวจัดการแพ็คเกจที่รองรับ จะมีค่าเริ่มต้นเป็นชุด Known Good Releases
หากไม่มี Known Good Release สำหรับตัวจัดการแพ็คเกจที่ร้องขอ Corepack จะค้นหารีจิสทรี npm เพื่อหาเวอร์ชันล่าสุดที่มีอยู่และแคชไว้เพื่อใช้ในอนาคต
Known Good Releases สามารถอัพเดตทั้งระบบได้โดยใช้ corepack install -g
เมื่อ Corepack ดาวน์โหลดเวอร์ชันใหม่ของตัวจัดการแพ็คเกจที่กำหนดในบรรทัดหลักเดียวกันกับ Known Good Release ระบบจะอัปเดตโดยอัตโนมัติตามค่าเริ่มต้น
คำสั่งยูทิลิตี้ที่มีรายละเอียดในส่วนถัดไป
คุณสามารถใช้เครือข่ายในขณะที่สร้างคอนเทนเนอร์อิมเมจของคุณได้ ในกรณีนี้ คุณเพียงเรียกใช้ corepack pack
เพื่อให้แน่ใจว่าอิมเมจของคุณมี Last Known Good release สำหรับตัวจัดการแพ็คเกจที่ระบุ
หรือคุณกำลังเผยแพร่โครงการของคุณไปยังระบบที่เครือข่ายไม่พร้อมใช้งาน ในกรณีนี้คุณจะต้องสร้างไฟล์เก็บถาวรตัวจัดการแพ็คเกจล่วงหน้าจากคอมพิวเตอร์ของคุณ (โดยใช้ corepack pack -o
) ก่อนที่จะจัดเก็บไว้ที่ใดที่คอนเทนเนอร์ของคุณจะสามารถเข้าถึงได้ (เช่น ภายในที่เก็บของคุณ) หลังจากนั้นมันเป็นเรื่องของการรัน corepack install -g --cache-only
เพื่อตั้งค่าแคช
corepack [@] [... args]
คำสั่งเมตานี้รันตัวจัดการแพ็คเกจที่ระบุในโฟลเดอร์ในเครื่อง คุณสามารถใช้เพื่อบังคับการติดตั้งให้รันกับเวอร์ชันที่กำหนดได้ ซึ่งจะเป็นประโยชน์เมื่อค้นหาการถดถอย
โปรดทราบว่าคำสั่งเหล่านั้นยังคงตรวจสอบว่าโปรเจ็กต์โลคัลได้รับการกำหนดค่าสำหรับตัวจัดการแพ็คเกจที่กำหนดหรือไม่ (เช่น คุณจะไม่สามารถรัน corepack yarn install
บนโปรเจ็กต์ที่ฟิลด์ packageManager
อ้างอิง pnpm
)
corepack cache clean
ล้างไดเร็กทอรีแคช COREPACK_HOME
ในเครื่อง
corepack cache clear
ล้างไดเร็กทอรีแคช COREPACK_HOME
ในเครื่อง
corepack enable [... name]
ตัวเลือก | คำอธิบาย |
---|---|
--install-directory | เพิ่มแผ่นชิมไปยังตำแหน่งที่ระบุ |
คำสั่งนี้จะตรวจจับตำแหน่งที่ติดตั้ง Corepack และจะสร้าง shims ถัดจากนั้นสำหรับตัวจัดการแพ็คเกจแต่ละตัวที่ระบุ (หรือทั้งหมดหากคำสั่งถูกเรียกโดยไม่มีพารามิเตอร์) โปรดทราบว่า shims npm จะไม่ถูกติดตั้งเว้นแต่จะมีการร้องขออย่างชัดเจน เนื่องจากปัจจุบัน npm มีการแจกจ่ายกับ Node.js ผ่านวิธีการอื่น
หากระบบไฟล์ที่มีไบนารี corepack
ตั้งอยู่เป็นแบบอ่านอย่างเดียว คำสั่งนี้จะล้มเหลว วิธีแก้ปัญหาคือการเพิ่มไบนารีเป็นนามแฝงในไฟล์การกำหนดค่าเชลล์ของคุณ (เช่นใน ~/.bash_aliases
):
เส้นด้ายนามแฝง = "เส้นด้าย corepack" นามแฝงเส้นด้าย pkg = "corepackเส้นด้ายpkg" นามแฝง pnpm = "corepack pnpm" นามแฝง pnpx = "corepack pnpx" นามแฝง npm = "corepack npm" นามแฝง npx = "corepack npx"
บน Windows PowerShell คุณสามารถเพิ่มฟังก์ชันโดยใช้ตัวแปรอัตโนมัติ $PROFILE
:
echo "ฟังก์ชั่นเส้นด้าย { เส้นด้าย corepack `$args }" >> $PROFILEecho "ฟังก์ชั่นเส้นด้ายpkg { corepackเส้นด้ายpkg `$args }" >> $PROFILEecho "ฟังก์ชั่น pnpm { corepack pnpm `$args }" >> $PROFILEecho "ฟังก์ชั่น pnpx { corepack pnpx `$args }" >> $PROFILEecho "ฟังก์ชั่น npm { corepack npm `$args }" >> $PROFILEecho "ฟังก์ชั่น npx { corepack npx `$args }" >> $PROFILE
corepack disable [... name]
ตัวเลือก | คำอธิบาย |
---|---|
--install-directory | ถอดแผ่นรองออกไปยังตำแหน่งที่ระบุ |
คำสั่งนี้จะตรวจจับตำแหน่งที่ติดตั้ง Node.js และจะลบ shims ออกจากที่นั่น
corepack install
ดาวน์โหลดและติดตั้งตัวจัดการแพ็คเกจที่กำหนดค่าไว้ในโปรเจ็กต์ในเครื่อง คำสั่งนี้จะไม่เปลี่ยนเวอร์ชันสากลที่ใช้เมื่อเรียกใช้ตัวจัดการแพ็คเกจจากภายนอกโปรเจ็กต์ (ใช้แฟล็ก `-g,--global` หากคุณต้องการดำเนินการนี้)
corepack install <-g,--global> [... name[@]]
ติดตั้งตัวจัดการแพ็คเกจที่เลือกและติดตั้งบนระบบ
ตัวจัดการแพ็คเกจที่ติดตั้งจะถูกกำหนดค่าเป็นค่าเริ่มต้นใหม่เมื่อเรียกไบนารีที่เกี่ยวข้องภายนอกโปรเจ็กต์ที่กำหนดฟิลด์ packageManager
corepack pack [... name[@]]
ตัวเลือก | คำอธิบาย |
---|---|
--json | พิมพ์โฟลเดอร์เอาท์พุตแทนที่จะพิมพ์บันทึก |
-o,--output | เส้นทางที่จะสร้างไฟล์เก็บถาวร |
ดาวน์โหลดตัวจัดการแพ็คเกจที่เลือกและจัดเก็บไว้ใน tarball ที่เหมาะสำหรับใช้กับ corepack install -g
corepack use ]>
เมื่อรัน คำสั่งนี้จะดึงข้อมูลรีลีสล่าสุดที่ตรงกับตัวอธิบายที่ให้มา กำหนดให้กับไฟล์ package.json ของโปรเจ็กต์ และดำเนินการติดตั้งโดยอัตโนมัติ
corepack up
ดึงข้อมูลเวอร์ชันล่าสุดที่มีอยู่สำหรับบรรทัดรีลีสหลักปัจจุบันของตัวจัดการแพ็คเกจที่ใช้ในโปรเจ็กต์โลคัล และอัพเดตโปรเจ็กต์เพื่อใช้งาน
คำสั่งนี้ต่างจาก corepack use
ตรงที่ไม่ได้ใช้ชื่อตัวจัดการแพ็กเกจหรือช่วงเวอร์ชัน เนื่องจากคำสั่งนี้จะเลือกเวอร์ชันล่าสุดจากบรรทัดหลักเดียวกันเสมอ หากคุณต้องการอัปเกรดเป็นคีย์หลักใหม่ ให้ corepack use {name}@latest
call (หรือเพียงแค่ corepack use {name}
)
COREPACK_DEFAULT_TO_LATEST
สามารถตั้งค่าเป็น 0
เพื่อสั่ง Corepack ไม่ให้ค้นหารีจิสตรีระยะไกลสำหรับเวอร์ชันล่าสุดของตัวจัดการแพ็คเกจที่เลือก และไม่ให้อัปเดตเวอร์ชัน Last Known Good เมื่อดาวน์โหลดเวอร์ชันใหม่ของบรรทัดหลักเดียวกัน
COREPACK_ENABLE_AUTO_PIN
สามารถตั้งค่าเป็น 0
เพื่อป้องกันไม่ให้ Corepack อัปเดตฟิลด์ packageManager
เมื่อตรวจพบว่าแพ็คเกจในเครื่องไม่แสดงรายการ โดยทั่วไป เราขอแนะนำให้แสดงรายการฟิลด์ packageManager
เสมอ (ซึ่งคุณสามารถตั้งค่าได้อย่างง่ายดายผ่าน corepack use [name]@[version]
) เนื่องจากจะทำให้แน่ใจได้ว่าการติดตั้งโปรเจ็กต์ของคุณจะได้รับการกำหนดไว้เสมอ
COREPACK_ENABLE_DOWNLOAD_PROMPT
สามารถตั้งค่าเป็น 0
เพื่อป้องกันไม่ให้ Corepack แสดง URL เมื่อจำเป็นต้องดาวน์โหลดซอฟต์แวร์ หรือสามารถตั้งค่าเป็น 1
เพื่อให้ URL แสดง ตามค่าเริ่มต้น เมื่อ Corepack ถูกเรียกอย่างชัดเจน (เช่น corepack pnpm …
) จะถูกตั้งค่าเป็น 0
; เมื่อ Corepack ถูกเรียกโดยปริยาย (เช่น pnpm …
) จะถูกตั้งค่าเป็น 1
เมื่ออินพุตมาตรฐานเป็น TTY และตรวจไม่พบสภาพแวดล้อม CI Corepack จะขออินพุตจากผู้ใช้ก่อนเริ่มการดาวน์โหลด
COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
สามารถตั้งค่าเป็น 1
เพื่ออนุญาตให้ใช้ URL ที่กำหนดเองเพื่อโหลดตัวจัดการแพ็คเกจที่ Corepack รู้จัก ( yarn
npm
และ pnpm
)
COREPACK_ENABLE_NETWORK
สามารถตั้งค่าเป็น 0
เพื่อป้องกันไม่ให้ Corepack เข้าถึงเครือข่าย (ในกรณีนี้คุณจะต้องรับผิดชอบในการไฮเดรตเวอร์ชันตัวจัดการแพ็คเกจที่จำเป็นสำหรับโครงการที่คุณรันโดยใช้ corepack install -g --cache-only
).
COREPACK_ENABLE_STRICT
สามารถตั้งค่าเป็น 0
เพื่อป้องกันไม่ให้ Corepack เกิดข้อผิดพลาดหากตัวจัดการแพ็คเกจไม่สอดคล้องกับที่กำหนดไว้สำหรับโปรเจ็กต์ปัจจุบัน ซึ่งหมายความว่าหากผู้ใช้ใช้ตัวจัดการแพ็กเกจที่ระบุในโปรเจ็กต์ปัจจุบัน ผู้ใช้จะใช้เวอร์ชันที่ระบุโดยฟิลด์ packageManager
ของโปรเจ็กต์ แต่หากผู้ใช้ใช้ตัวจัดการแพ็คเกจอื่นที่แตกต่างจากที่ระบุสำหรับโปรเจ็กต์ปัจจุบัน ผู้ใช้จะใช้เวอร์ชันตัวจัดการแพ็คเกจทั้งระบบ
COREPACK_ENABLE_PROJECT_SPEC
สามารถตั้งค่าเป็น 0
เพื่อป้องกันไม่ให้ Corepack ตรวจสอบว่าตัวจัดการแพ็คเกจสอดคล้องกับแพ็คเกจที่กำหนดไว้สำหรับโปรเจ็กต์ปัจจุบันหรือไม่ ซึ่งหมายความว่าจะใช้ตัวจัดการแพ็คเกจทั้งระบบเสมอ โดยไม่คำนึงถึงสิ่งที่ถูกระบุไว้ในฟิลด์ packageManager
ของโปรเจ็กต์
COREPACK_HOME
สามารถตั้งค่าเพื่อกำหนดตำแหน่งที่ Corepack ควรติดตั้งตัวจัดการแพ็คเกจ โดยค่าเริ่มต้น จะถูกตั้งค่าเป็น %LOCALAPPDATA%nodecorepack
บน Windows และเป็น $HOME/.cache/node/corepack
ทุกที่
COREPACK_ROOT
ไม่มีผลกระทบต่อการทำงานของ Corepack เอง Corepack จะถูกตั้งค่าในสภาพแวดล้อมของคุณโดยอัตโนมัติเมื่อส่งไปยังผู้จัดการแพ็คเกจพื้นฐาน เพื่อให้พวกเขาสามารถตรวจจับคุณสมบัติการมีอยู่ของมันได้ (มีประโยชน์สำหรับคำสั่งเช่น yarn init
)
COREPACK_NPM_REGISTRY
ตั้งค่า URL ฐานรีจิสทรีที่ใช้เมื่อดึงข้อมูลตัวจัดการแพ็คเกจจาก npm ค่าเริ่มต้นคือ https://registry.npmjs.org
COREPACK_NPM_TOKEN
ตั้งค่าส่วนหัวการอนุญาตโทเค็น Bearer เมื่อเชื่อมต่อกับรีจิสทรีประเภท npm
COREPACK_NPM_USERNAME
และ COREPACK_NPM_PASSWORD
เพื่อตั้งค่าส่วนหัวการอนุญาตพื้นฐานเมื่อเชื่อมต่อกับรีจิสทรีประเภท npm โปรดทราบว่าจำเป็นต้องมีตัวแปรสภาพแวดล้อมทั้งสองและเป็นข้อความธรรมดา หากคุณต้องการส่งรหัสผ่านที่ว่างเปล่า ให้ตั้งค่า COREPACK_NPM_PASSWORD
ให้เป็นสตริงว่างอย่างชัดเจน
HTTP_PROXY
, HTTPS_PROXY
และ NO_PROXY
ได้รับการสนับสนุนผ่าน node-proxy-agent
COREPACK_INTEGRITY_KEYS
สามารถตั้งค่าเป็นสตริงว่างหรือ 0
เพื่อสั่งให้ Corepack ข้ามการตรวจสอบความสมบูรณ์ หรือเป็นสตริง JSON ที่มีคีย์ที่กำหนดเอง
มีปัญหาเครือข่ายมากมายที่อาจเกิดขึ้นขณะรันคำสั่ง corepack
สิ่งที่ต้องตรวจสอบ:
ตรวจสอบให้แน่ใจว่าการเชื่อมต่อเครือข่ายของคุณใช้งานได้
ตรวจสอบให้แน่ใจว่าโฮสต์สำหรับคำขอของคุณสามารถแก้ไขได้โดย DNS ของคุณ ลองใช้ curl [URL]
(ipv4) และ curl -6 [URL]
(ipv6) จากเชลล์ของคุณ
ตรวจสอบการตั้งค่าพร็อกซีของคุณ (ดูตัวแปรสภาพแวดล้อม)
ดูที่ CONTRIBUTING.md
ดู LICENSE.md