ความหมายของคำนำหน้า“ at” (@) บนแพ็คเกจ npm คืออะไร?


295

ในเอกสารประกอบเราเตอร์เชิงมุมฉันเพิ่งสะดุดคำสั่ง npm ที่ฉันไม่เคยเห็นมาก่อนและฉันไม่เข้าใจว่าเกิดอะไรขึ้น:

npm install @angular/router --save

ความหมายของ@angular/routerอะไร

สตริงทั้งหมดเป็นชื่อแพ็กเกจหรือไม่? แต่แล้วฉันไม่ได้พบกับแพคเกจที่เมื่อฉันใช้การค้นหาบนnpmjs.com และการค้นหา commandline ไม่ส่งคืนแพ็คเกจดังกล่าว:

npm search @angular/router
:No match found for "@angular/router"

ดังนั้น@angular/กลไกคำนำหน้าบางชนิดเป็น npm หรือไม่ และมันทำงานอย่างไร



3
@trailingslash นั่นเป็นคำตอบที่ยอดเยี่ยม! (ไม่ควรเป็นความคิดเห็น)
จำกัด

คำตอบ:


325

นี่เป็นคุณลักษณะใหม่ของ NPM ที่เรียกว่า 'แพ็คเกจที่กำหนดขอบเขต' ซึ่งอนุญาตให้แพ็กเกจ NPM ถูกกำหนดเนมสเปซได้อย่างมีประสิทธิภาพ ผู้ใช้และองค์กรทุกคนใน NPM มีขอบเขตของตัวเองและพวกเขาเป็นคนเดียวที่สามารถเพิ่มแพ็คเกจลงไปได้

สิ่งนี้มีประโยชน์ด้วยเหตุผลหลายประการ:

  • ช่วยให้องค์กรสามารถระบุได้อย่างชัดเจนว่าแพ็คเกจใดเป็น 'ทางการ' และอันไหนไม่
    • ตัวอย่างเช่นถ้าแพ็คเกจมีขอบเขต@angularคุณรู้ว่ามันถูกเผยแพร่โดยทีมงานหลักของ Angular
  • ชื่อแพคเกจจะต้องไม่ซ้ำกับขอบเขตที่มีการเผยแพร่ในไม่ใช่รีจิสตรีทั้งหมด
    • ตัวอย่างเช่นชื่อแพ็กเกจhttpถูกใช้ไปแล้วในที่เก็บหลัก แต่ Angular สามารถมีได้@angular/httpเช่นกัน

เหตุผลที่แพคเกจที่มีการกำหนดขอบเขตไม่ปรากฏในการค้นหาสาธารณะเนื่องจากส่วนใหญ่เป็นแพ็กเกจส่วนตัวที่สร้างขึ้นโดยองค์กรที่ใช้บริการชำระเงินของ NPM และไม่สะดวกในการเปิดการค้นหาจนกว่าพวกเขาจะแน่ใจได้อย่างสมบูรณ์ว่าพวกเขาไม่ จะทำให้ทุกอย่างเป็นสาธารณะซึ่งไม่ควรเปิดเผยต่อสาธารณะ - จากมุมมองทางกฎหมายนี่เป็นสิ่งที่เข้าใจได้

สำหรับข้อมูลเพิ่มเติมโปรดดูที่เอกสาร NPMและเอกสารเชิงมุม

แก้ไข:ดูเหมือนว่าแพคเกจที่มีการกำหนดขอบเขตสาธารณะจะแสดงขึ้นอย่างถูกต้องในการค้นหา!


68

โดยทั่วไปมีสองประเภทของโมดูลใน NPM เป็น -

  • โมดูลส่วนกลาง - โมดูลเหล่านี้เป็นโมดูลที่ปฏิบัติตามรูปแบบการตั้งชื่อที่มีอยู่ในปัจจุบัน คุณrequire('foo')และมีความสุขมาก พวกเขาเป็นเจ้าของโดยหนึ่งคนขึ้นไปผ่านnpm install XYZคำสั่ง

  • โมดูลขอบเขต - เหล่านี้เป็นโมดูลใหม่ที่มี "ขอบเขต" ภายใต้ชื่อองค์กรที่ขึ้นต้นด้วย@ชื่อขององค์กร, @someOrgScope/packagenameเฉือนและในที่สุดชื่อแพคเกจเช่น ขอบเขตเป็นวิธีการจัดกลุ่มแพ็กเกจที่เกี่ยวข้องเข้าด้วยกันและยังส่งผลต่อบางสิ่งเกี่ยวกับวิธีการที่ใช้แพ็กเกจ npm

แพ็กเกจที่มีขอบเขตถูกติดตั้งโดยอ้างอิงตามชื่อนำหน้าด้วย @ -symbol ในการติดตั้ง npm:

npm install @myorg/mypackage

ดูสิ่งนี้ด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.