การเผยแพร่ไปยัง npm และการกำหนดเวอร์ชันเชิงความหมาย
ทำรีลีสให้เป็นอัตโนมัติด้วย changesets หรือ semantic-release และเผยแพร่แพ็กเกจแบบมีขอบเขตไปยังรีจิสทรี npm
การเผยแพร่ไปยัง npm และการกำหนดเวอร์ชันเชิงความหมาย เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
npm publish --dry-run
ก่อนเผยแพร่ ให้เรียกใช้ npm publish --dry-run ทุกครั้ง คำสั่งนี้จำลองการเผยแพร่โดยไม่อัปโหลดสิ่งใดจริง แสดงให้เห็นอย่างชัดเจนว่าไฟล์ใดจะถูกรวม ขนาดของไฟล์ และเนื้อหาของไฟล์บรรจุแพ็กเกจ คำสั่งนี้ช่วยตรวจจับข้อผิดพลาดที่พบบ่อย เช่น การรวมไฟล์ต้นฉบับโดยไม่ตั้งใจ หรือไม่มีไดเรกทอรี dist
การควบคุมไฟล์ที่เผยแพร่
ควบคุมสิ่งที่จะเผยแพร่โดยใช้ฟิลด์ files ใน package.json: "files": ["dist", "README.md"] แนวทางการระบุรายการที่อนุญาตนี้ปลอดภัยกว่า .npmignore ซึ่งเป็นรายการปฏิเสธและอาจทำให้ไฟล์ที่มีข้อมูลละเอียดอ่อนรั่วไหลได้หากคุณลืมเพิ่มไฟล์เหล่านั้น โปรดรวม dist คำประกาศชนิดข้อมูล และเอกสารไว้เสมอ อย่ารวม src การทดสอบ หรือ node_modules
พื้นฐานการกำหนดเวอร์ชันตามความหมาย
แพ็กเกจ npm ใช้การกำหนดเวอร์ชันตามความหมาย (semver): MAJOR.MINOR.PATCH ให้เพิ่ม MAJOR เมื่อมีการเปลี่ยนแปลงที่ทำให้การใช้งานเดิมเสียหาย เช่น การนำพร็อพออกหรือเปลี่ยนลายเซ็นของ API ให้เพิ่ม MINOR เมื่อเพิ่มความสามารถใหม่ที่ยังเข้ากันได้กับเวอร์ชันก่อนหน้า เช่น คอมโพเนนต์ใหม่หรือพร็อพใหม่ที่เป็นตัวเลือก ให้เพิ่ม PATCH เมื่อแก้ไขข้อบกพร่องโดยยังเข้ากันได้กับเวอร์ชันก่อนหน้า เวอร์ชัน 0.x.x ถือว่ายังไม่เสถียร จึงอาจมีส่วนใด ๆ เปลี่ยนจนใช้งานไม่ได้
เวอร์ชันก่อนเผยแพร่
ตัวระบุก่อนเผยแพร่ใช้บ่งบอกว่าเวอร์ชันนั้นยังไม่พร้อมสำหรับใช้งานจริง: 1.0.0-alpha.1 สำหรับรุ่นทดลองระยะแรก 1.0.0-beta.2 สำหรับรุ่นที่ความสามารถครบถ้วนแล้วแต่อาจยังมีข้อบกพร่อง และ 1.0.0-rc.1 (รุ่นตัวเลือกสำหรับเผยแพร่) สำหรับรุ่นที่พร้อมเข้าสู่การทดสอบขั้นสุดท้าย ให้เผยแพร่รุ่นก่อนเผยแพร่ด้วย npm publish --tag beta เพื่อไม่ให้กลายเป็นรุ่นเริ่มต้นที่ผู้ใช้ติดตั้ง
เครื่องมือ Changesets
Changesets เป็นเครื่องมือมาตรฐานสำหรับจัดการการกำหนดเวอร์ชันของแพ็กเกจและบันทึกการเปลี่ยนแปลงในไลบรารีคอมโพเนนต์ ขั้นตอนการทำงานมีดังนี้ ผู้มีส่วนร่วมเรียกใช้ yarn changeset add เพื่อบันทึกสิ่งที่เปลี่ยนแปลงและประเภทการเปลี่ยนแปลง (major/minor/patch) ระบบ CI เรียกใช้ yarn changeset version เพื่อปรับเพิ่มเวอร์ชันของแพ็กเกจ จากนั้นขั้นตอนการเผยแพร่เรียกใช้ yarn changeset publish เพื่อเผยแพร่ไปยัง npm
การสร้าง CHANGELOG โดยอัตโนมัติ
Changesets จะสร้างและดูแล CHANGELOG.md โดยอัตโนมัติ โดยอ้างอิงจากไฟล์ Changesets ที่ผู้มีส่วนร่วมส่งเข้าไปในคลัง แต่ละรายการประกอบด้วยหมายเลขเวอร์ชัน วันที่เผยแพร่ และคำอธิบายการเปลี่ยนแปลง วิธีนี้สร้างประวัติของทุกเวอร์ชันที่มนุษย์อ่านเข้าใจได้ โดยไม่ต้องดูแลบันทึกการเปลี่ยนแปลงด้วยตนเอง
semantic-release เป็นทางเลือก
semantic-release เป็นเครื่องมือกำหนดเวอร์ชันแบบอัตโนมัติทั้งหมด โดยกำหนดเวอร์ชันถัดไปจากข้อความคอมมิตตามรูปแบบ (feat: → minor, fix: → patch, BREAKING CHANGE: → major) เครื่องมือจะปรับเพิ่มเวอร์ชัน สร้างบันทึกการเปลี่ยนแปลง และเผยแพร่ไปยัง npm ทั้งหมดนี้เริ่มทำโดยระบบ CI เมื่อผสานเข้ากับ main ไม่ต้องจัดการเวอร์ชันด้วยตนเอง
สิทธิ์การเข้าถึง npm: สาธารณะเทียบกับจำกัด
แพ็กเกจที่ไม่มีขอบเขต (my-component) จะเป็นสาธารณะเสมอ แพ็กเกจที่มีขอบเขต (@myorg/my-component) จะมีค่าเริ่มต้นเป็นแบบจำกัด (ส่วนตัว) หากต้องการเผยแพร่ให้เป็นสาธารณะ ให้ใช้ npm publish --access public แพ็กเกจแบบจำกัดต้องใช้บัญชี npm แบบชำระเงินหรือองค์กร โปรดยืนยันการตั้งค่าสิทธิ์ก่อนเผยแพร่ครั้งแรก
การยืนยันแหล่งที่มาของแพ็กเกจบน npm
การยืนยันแหล่งที่มาของ npm จะเชื่อมโยงแพ็กเกจที่คุณเผยแพร่เข้ากับคอมมิต git เฉพาะรายการด้วยวิธีที่ตรวจสอบได้ เปิดใช้ความสามารถนี้ด้วย npm publish --provenance ใน GitHub Actions ผู้ใช้สามารถตรวจสอบได้ว่าแพ็กเกจที่ติดตั้งสร้างมาจากคอมมิตต้นฉบับที่ตรงกันทุกประการกับรายการที่แสดงบนหน้าทะเบียน npm วิธีนี้ช่วยยกระดับความปลอดภัยของห่วงโซ่อุปทานได้อย่างมาก
การเลิกใช้งานเวอร์ชันเก่า
เมื่อเวอร์ชันมีข้อบกพร่องร้ายแรงหรือมีการเปลี่ยนแปลงที่ทำให้การใช้งานเดิมเสียหาย ให้เลิกใช้งานเวอร์ชันนั้นด้วยคำสั่ง npm deprecate your-package@1.2.3 "Security vulnerability, upgrade to 1.2.4" npm จะแสดงคำเตือนว่าเลิกใช้งานแล้วแก่ผู้ที่ติดตั้งเวอร์ชันดังกล่าว การดำเนินการนี้ไม่ได้ลบเวอร์ชันนั้นออกไป เพราะโดยค่าเริ่มต้น npm จะไม่ลบเวอร์ชันที่เผยแพร่แล้ว แต่จะแจ้งเตือนให้ผู้ใช้อัปเกรด
การตั้งชื่อแพ็กเกจแบบมีขอบเขต
แพ็กเกจแบบมีขอบเขตใช้รูปแบบ @scope/package-name โดยทั่วไปขอบเขตจะเป็นชื่อผู้ใช้ npm หรือชื่อองค์กรของคุณ แพ็กเกจแบบมีขอบเขตช่วยให้เห็นได้ชัดเจนว่าใครเป็นผู้ดูแลแพ็กเกจ และป้องกันชื่อซ้ำกับแพ็กเกจที่ไม่มีขอบเขต โปรดใช้แพ็กเกจแบบมีขอบเขตสำหรับแพ็กเกจส่วนตัวและแพ็กเกจโอเพนซอร์สที่เกี่ยวข้องกับองค์กรของคุณ
การกำหนดเวอร์ชันตามความหมาย: MAJOR เทียบกับ MINOR
ตามหลักการกำหนดเวอร์ชันตามความหมาย คุณควรเพิ่มหมายเลขเวอร์ชัน MAJOR เมื่อใด
ทบทวนบทเรียน: การเผยแพร่และการกำหนดเวอร์ชัน
ใช้ npm publish --dry-run เพื่อดูตัวอย่างก่อนเผยแพร่ และใช้ฟิลด์ files เพื่อควบคุมสิ่งที่จะเผยแพร่ การกำหนดเวอร์ชันตามความหมาย: MAJOR สำหรับการเปลี่ยนแปลงที่ทำให้การใช้งานเดิมเสียหาย MINOR สำหรับความสามารถใหม่ และ PATCH สำหรับการแก้ไข รุ่นก่อนเผยแพร่ใช้แท็ก -alpha/-beta/-rc Changesets ช่วยทำให้การกำหนดเวอร์ชันและการสร้าง CHANGELOG เป็นอัตโนมัติสำหรับไลบรารีที่ทำงานร่วมกัน semantic-release ทำให้กระบวนการจากคอมมิตตามรูปแบบเป็นอัตโนมัติ เปิดใช้ --provenance เพื่อความปลอดภัยของห่วงโซ่อุปทาน และเลิกใช้งานเวอร์ชันที่มีข้อบกพร่องด้วย npm deprecate
เรียนรู้ React ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 88
- บทเรียน
- 324
คำถามที่พบบ่อย
บทเรียน “การเผยแพร่ไปยัง npm และการกำหนดเวอร์ชันเชิงความหมาย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเผยแพร่ไปยัง npm และการกำหนดเวอร์ชันเชิงความหมาย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเผยแพร่ไปยัง npm และการกำหนดเวอร์ชันเชิงความหมาย”
ทำรีลีสให้เป็นอัตโนมัติด้วย changesets หรือ semantic-release และเผยแพร่แพ็กเกจแบบมีขอบเขตไปยังรีจิสทรี npm คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การเผยแพร่ไปยัง npm และการกำหนดเวอร์ชันเชิงความหมาย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การบันเดิลด้วย Rollup และ tsup สำหรับไลบรารี
- เอาต์พุตแพ็กเกจคู่ ESM และ CJS
- สิ่งที่ต้องพึ่งพาแบบเพียร์และการตัดต้นไม้
- การเผยแพร่ไปยัง npm และการกำหนดเวอร์ชันเชิงความหมาย