NPM- จัดการแพ็คเกจแต่ไม่ทำให้ชีวิตง่ายขึ้นในการดำเนินการใด ๆ
NPX- เครื่องมือสำหรับการดำเนินการแพคเกจโหนด
NPXมาพร้อมกับNPMรุ่น5.2+
NPMด้วยตัวเองไม่เพียง แต่เรียกใช้แพคเกจใด ๆ มันไม่เรียกใช้แพคเกจใด ๆ ในความเป็นจริง หากคุณต้องการเรียกใช้แพคเกจโดยใช้ NPM คุณต้องระบุแพ็คเกจนั้นในpackage.jsonไฟล์ของคุณ
เมื่อติดตั้ง executables ผ่านแพ็คเกจ NPM แล้ว NPM จะเชื่อมโยงไปยังพวกเขา:
- การติดตั้งในเครื่องมีการสร้าง "ลิงก์" ใน
./node_modules/.bin/ไดเรกทอรี
- การติดตั้งทั่วโลกมี "ลิงก์" ที่สร้างจาก
bin/ไดเรกทอรีทั่วโลก(เช่น/usr/local/bin) บน Linux หรือที่%AppData%/npmบน Windows
เอกสารที่คุณควรอ่าน
NPM:
หนึ่งอาจติดตั้งแพคเกจภายในโครงการบางอย่าง:
npm install some-package
ตอนนี้สมมติว่าคุณต้องการให้ NodeJS ดำเนินการแพ็คเกจจากบรรทัดคำสั่ง:
$ some-package
ข้างต้นจะล้มเหลว เพียงติดตั้งทั่วโลกแพคเกจที่สามารถดำเนินการได้โดยการพิมพ์ชื่อของพวกเขาเท่านั้น
ในการแก้ไขปัญหานี้และเปิดใช้งานคุณต้องพิมพ์เส้นทางภายในเครื่อง:
$ ./node_modules/.bin/some-package
คุณสามารถเรียกใช้แพคเกจที่ติดตั้งในท้องที่โดยทางเทคนิคโดยการแก้ไขpackages.jsonไฟล์ของคุณและเพิ่มแพ็คเกจนั้นในscriptsส่วน:
{
"name": "whatever",
"version": "1.0.0",
"scripts": {
"some-package": "some-package"
}
}
จากนั้นเรียกใช้สคริปต์โดยใช้npm run-script(หรือnpm run):
npm run some-package
NPX:
npxจะตรวจสอบว่า<command>มีอยู่ใน$PATHหรือในไบนารีโครงการของท้องถิ่นและดำเนินการ ดังนั้นสำหรับตัวอย่างข้างต้นหากคุณต้องการใช้งานแพคเกจที่ติดตั้งในเครื่องsome-packageสิ่งที่คุณต้องทำคือพิมพ์:
npx some-package
ข้อได้เปรียบที่สำคัญอีกข้อหนึ่งของnpxความสามารถในการใช้งานแพคเกจที่ไม่ได้ติดตั้งไว้ก่อนหน้านี้:
$ npx create-react-app my-app
ตัวอย่างด้านบนจะสร้างreactแอปสำเร็จรูปในเส้นทางที่คำสั่งทำงานและทำให้แน่ใจว่าคุณใช้ตัวสร้างหรือเครื่องมือสร้างเวอร์ชันล่าสุดโดยไม่ต้องอัพเกรดทุกครั้งที่คุณใช้งาน
คำถามที่เกี่ยวข้อง:
- วิธีใช้แพ็คเกจที่ติดตั้งไว้ใน node_modules
- NPM: วิธีการที่จะหาโฟลเดอร์. / node /modules/.bin?
- คุณรันไฟล์ js โดยใช้สคริปต์ npm ได้อย่างไร
create-react-appเป็นเครื่องกำเนิดไฟฟ้าnpxไปที่อินเทอร์เน็ตดาวน์โหลดแพ็คเกจชั่วคราวเพื่อให้สามารถเรียกใช้งานได้ ( np x ) สิ่งที่คุณได้รับ (และต้องการ) คือผลลัพธ์ซึ่งถูกบันทึกไว้ในเครื่องที่คุณเรียกใช้คำสั่ง