สํารวจแพคเกจ
แพ็คเกจ ใช้เพื่อกําหนดส่วนประกอบที่คุณพึ่งพาและพึ่งพาในโซลูชันซอฟต์แวร์ของคุณ มีวิธีจัดเก็บส่วนประกอบเหล่านั้นในรูปแบบที่กําหนดไว้อย่างดีพร้อม ข้อมูลเมตา เพื่ออธิบาย
แพคเกจคืออะไร
แพ็คเกจเป็นวิธีที่เป็นทางการในการสร้างหน่วยที่แจกจ่ายได้ของสิ่งประดิษฐ์ซอฟต์แวร์ที่สามารถนําไปใช้ได้จากโซลูชันซอฟต์แวร์อื่น
ลักษณะสําคัญของแพ็คเกจ:
- คําอธิบายเนื้อหา: แพ็คเกจอธิบายเนื้อหาที่มีอยู่
- ข้อมูลเมตา: ให้ข้อมูลเพิ่มเติมเกี่ยวกับแพ็คเกจ (เวอร์ชัน ผู้เขียน การขึ้นต่อกัน)
- การระบุเฉพาะ: ข้อมูลระบุพัสดุแต่ละชิ้นโดยเฉพาะ
- พรรณนาตนเอง: รูปแบบแพ็คเกจเป็นมาตรฐานและมีเอกสารเป็นอย่างดี
ประโยชน์ของการใช้แพ็คเกจ:
- ที่เก็บข้อมูลส่วนกลาง: จัดเก็บพัสดุในตําแหน่งส่วนกลางเพื่อให้เข้าถึงได้ง่าย
- การบริโภคที่คาดการณ์ได้: บริโภคเนื้อหาในบรรจุภัณฑ์ในลักษณะที่สอดคล้องกัน
- การสนับสนุนเครื่องมือ: เปิดใช้งานเครื่องมืออัตโนมัติเพื่อจัดการแพ็คเกจในโซลูชันซอฟต์แวร์ของคุณ
- การจัดการเวอร์ชัน: ติดตามและจัดการส่วนประกอบเวอร์ชันต่างๆ
- การแก้ปัญหาการพึ่งพา: แก้ไขและติดตั้งการขึ้นต่อกันที่จําเป็นโดยอัตโนมัติ
ส่วนประกอบของแพ็คเกจ
แพ็คเกจทั่วไปประกอบด้วย:
- รหัสที่รวบรวม: ไลบรารี แอสเซมบลี หรือไฟล์ปฏิบัติการ
- ไฟล์ต้นฉบับ: ในบางกรณี ซอร์สโค้ดสําหรับการดีบักหรือการอ้างอิง
- ข้อมูลเมตา: ข้อมูลเกี่ยวกับแพ็คเกจ (ชื่อ รุ่น ผู้สร้าง ใบอนุญาต การขึ้นต่อกัน)
- เอกสาร: ไฟล์ README, เอกสารประกอบ API หรือคู่มือการใช้งาน
- สินทรัพย์: รูปภาพ ไฟล์การกําหนดค่า หรือทรัพยากรอื่นๆ
ชนิดของแพคเกจ
แพคเกจที่สามารถใช้สําหรับชนิดต่าง ๆ ของคอมโพเนนต์ ชนิดของคอมโพเนนต์ที่คุณต้องการใช้ใน codebase ของคุณแตกต่างกันสําหรับส่วนและเลเยอร์ต่างๆ ของโซลูชันที่คุณกําลังสร้าง
ช่วงส่วนประกอบ:
- ส่วนประกอบส่วนหน้า: ไฟล์โค้ด JavaScript, ไลบรารี CSS, เฟรมเวิร์ก UI
- ส่วนประกอบแบ็กเอนด์: แอสเซมบลี .NET, Java JAR, โมดูล Python
- โซลูชั่นที่สมบูรณ์: แอปพลิเคชันหรือไมโครเซอร์วิสในตัว
- ไฟล์ที่นํากลับมาใช้ใหม่ได้: เทมเพลต การตั้งค่าคอนฟิก หรือเอกสารประกอบ
ในช่วงหลายปีที่ผ่านมารูปแบบบรรจุภัณฑ์มีการเปลี่ยนแปลงและพัฒนา ตอนนี้มีรูปแบบมาตรฐานโดยพฤตินัยหลายรูปแบบสําหรับแพ็คเกจ
แพ็คเกจ NuGet
แพ็คเกจ NuGet (ออกเสียงว่า "new get") เป็นมาตรฐานที่ใช้สําหรับสิ่งประดิษฐ์โค้ด .NET
ลักษณะ:
- เนื้อหา: รวมแอสเซมบลี .NET และไฟล์ที่เกี่ยวข้อง เครื่องมือ และบางครั้งก็มีเพียงข้อมูลเมตาเท่านั้น
- รูปแบบ: โดยพื้นฐานแล้วโครงสร้างโฟลเดอร์บีบอัดที่มีไฟล์ในรูปแบบ ZIP
-
การเพิ่ม:
.nupkgนามสกุลไฟล์ - การใช้: กําหนดวิธีการสร้าง จัดเก็บ และใช้แพ็คเกจในระบบนิเวศ .NET
ดูเพิ่มเติม บทนําสู่ NuGet
แพ็คเกจ NPM
แพ็คเกจ npm ใช้สําหรับการพัฒนา JavaScript
ลักษณะ:
- สาเหตุ: มีต้นกําเนิดมาจากการพัฒนา Node.js ซึ่งเป็นรูปแบบบรรจุภัณฑ์เริ่มต้น
-
เนื้อหา: ไฟล์หรือโฟลเดอร์ที่มีไฟล์ JavaScript และ
package.jsonไฟล์ -
ข้อมูลเมตา:
package.jsonอธิบายข้อมูลเมตา การขึ้นต่อกัน และสคริปต์ของแพ็คเกจ - โม ดู ล: แพ็คเกจมักจะมีโมดูลอย่างน้อยหนึ่งโมดูลที่สามารถโหลดได้เมื่อใช้แล้ว
ดูเพิ่มเติม เกี่ยวกับแพคเกจและโมดูล
แพ็คเกจ Maven
Maven ใช้สําหรับโครงการที่ใช้ Java
ลักษณะ:
- โมเดลวัตถุโครงการ: แต่ละแพ็คเกจมีไฟล์ POM ที่อธิบายข้อมูลเมตาของโครงการ
- รูปแบบ: ไฟล์ JAR (Java Archive) สําหรับไลบรารี WAR (Web Archive) สําหรับเว็บแอปพลิเคชัน
- พิกัด: ระบุโดย groupId, artifactId และเวอร์ชัน
- เครื่องมือสร้าง: Maven ทําหน้าที่เป็นทั้งตัวจัดการแพ็คเกจและเครื่องมือสร้างระบบอัตโนมัติ
แพ็คเกจ PyPI
PyPI (Python Package Index) ย่อมาจาก PyPI และรู้จักกันในชื่อ Cheese Shop เป็นที่เก็บซอฟต์แวร์ของบุคคลที่สามอย่างเป็นทางการสําหรับ Python
ลักษณะ:
-
รูปแบบ: การแจกแจงในรูปแบบวงล้อ (
.whl) หรือการแจกแจงแหล่งที่มา (.tar.gz) - เครื่องมือ: จัดการโดยใช้ pip (ตัวติดตั้งแพ็คเกจสําหรับ Python)
- เนื้อหา: โมดูลและแพ็คเกจ Python ที่มีการพึ่งพา
-
ข้อมูลเมตา:
setup.pyหรือpyproject.tomlไฟล์กําหนดข้อมูลแพ็คเกจ
รูปภาพ Docker
แพ็คเกจ Docker เรียกว่าอิมเมจและมีการปรับใช้ส่วนประกอบที่สมบูรณ์และครบถ้วน
ลักษณะ:
- มีในตัวเอง: อิมเมจ Docker มักแสดงถึงส่วนประกอบซอฟต์แวร์ที่สามารถโฮสต์และดําเนินการได้ด้วยตัวเอง
- สถาปัตยกรรมแบบเลเยอร์: รูปภาพถูกสร้างขึ้นเป็นเลเยอร์เพื่อประสิทธิภาพและความสามารถในการนํากลับมาใช้ใหม่
- ภาพพื้นฐาน: รูปภาพอาจขึ้นอยู่กับรูปภาพอื่นเป็นพื้นฐาน (เช่น Ubuntu, Alpine)
- การลงทะเบียน: เก็บไว้ในรีจิสทรี Docker (Docker Hub, Azure Container Registry)
การเลือกประเภทบรรจุภัณฑ์ที่เหมาะสม
| ชนิดของแพคเกจ | การใช้งานหลัก | ภาษา/แพลตฟอร์ม | การเพิ่ม |
|---|---|---|---|
| นูเก็ท | ไลบรารีและเครื่องมือ .NET | ซี#, เอฟ#, VB.NET | .nupkg |
| npm | ไลบรารีและเฟรมเวิร์ก JavaScript | JavaScript, TypeScript | N/A (โฟลเดอร์) |
| Maven | ไลบรารีและแอปพลิเคชัน Java | ชวา, คอตลิน, สกาลา |
.jar, .war |
| ไพพีไอ | ไลบรารีและแพ็คเกจ Python | หลาม |
.whl, .tar.gz |
| นักเทียบท่า | แอปพลิเคชันคอนเทนเนอร์ | ภาษาใดก็ได้ | เลเยอร์รูปภาพ |