มีวิธีใดในการเปลี่ยนชื่อโมดูล NPM ที่เผยแพร่ไปแล้วหรือไม่? ฉันต้องการเปลี่ยนชื่อโมดูลของฉันให้ตรงกับ API ที่เปิดเผยมากขึ้น แต่ไม่ต้องการปล่อยให้คนที่ติดตั้งไปแล้วไม่อยู่กับร่องกับรอย
มีวิธีใดในการเปลี่ยนชื่อโมดูล NPM ที่เผยแพร่ไปแล้วหรือไม่? ฉันต้องการเปลี่ยนชื่อโมดูลของฉันให้ตรงกับ API ที่เปิดเผยมากขึ้น แต่ไม่ต้องการปล่อยให้คนที่ติดตั้งไปแล้วไม่อยู่กับร่องกับรอย
คำตอบ:
ไม่มีวิธีเปิดเผยใด ๆ ในการทำเช่นนั้น เมื่อฉันพบสิ่งนี้ในอดีตแนวทางที่ฉันทำคือ:
npm เลิกใช้% ProjectName% @ "<= put-latest-version-here" "คำเตือน: โปรเจ็กต์นี้ถูกเปลี่ยนชื่อเป็น% NewProjectName% ติดตั้งโดยใช้% NewProjectName% แทน"
พูดง่ายๆว่าคุณทำไม่ได้ แต่ NPM npm deprecate
ให้คุณแก้ปัญหาที่แตกต่างกันเรียกว่า
สิ่งที่ทำคือทำเครื่องหมายเวอร์ชันเฉพาะหรือช่วงเวอร์ชันของแพ็กเกจนั้นว่าเลิกใช้งานแล้ว ถัดไปหากมีคนพยายามติดตั้งแพ็กเกจนี้พวกเขาจะได้รับคำเตือนแพ็กเกจเลิกใช้พร้อมกับข้อความที่คุณกำหนดเองซึ่งคุณสามารถระบุชื่อแพ็กเกจใหม่
การใช้งาน:
npm deprecate my-package-name@"< latest-version" "your message"
ข้อความของคุณอาจเป็นอะไรก็ได้เช่น:
WARNING: This project has been renamed to your-new-package-name. Install using new-package-name instead.
ในเวลาน้อยกว่า 24 ชั่วโมงฉันใช้คำสั่งต่อไปนี้เพื่อลบแพ็คเกจที่ไม่ถูกต้อง
npm unpublish <wrong package name> --force
จากเอกสารประกอบ:
ข้อมูลรีจิสทรีไม่เปลี่ยนรูปซึ่งหมายความว่าเมื่อเผยแพร่แล้วแพ็คเกจจะไม่สามารถเปลี่ยนแปลงได้ เราทำสิ่งนี้ด้วยเหตุผลด้านความปลอดภัยและความเสถียรของผู้ใช้ที่ขึ้นอยู่กับแพ็คเกจเหล่านั้น
อย่างไรก็ตามแพ็คเกจที่เผยแพร่ใหม่ - ภายใน72 ชั่วโมง - สามารถยกเลิกการเผยแพร่ได้โดยเรียกใช้:
npm unpublish <package_name> -f
การดำเนินการนี้จะลบแพ็คเกจออกจากรีจิสทรี NPM หากมีการเผยแพร่น้อยกว่า72 ชั่วโมงที่ผ่านมา จากนั้นคุณสามารถเปลี่ยนชื่อแพ็กเกจของคุณและเผยแพร่อีกครั้ง
ข้อควรระวัง: คุณต้องรอ 24 ชั่วโมงหากคุณพยายามเผยแพร่แพ็คเกจที่มีชื่อเดียวกันอีกครั้ง
มีคนสร้างปลั๊กอิน npm เล็ก ๆ ที่มีประโยชน์สำหรับทำสิ่งนี้ได้อย่างง่ายดาย😊
https://www.npmjs.com/package/@tiaanduplessis/pkg-rename
npm -g install @tiaanduplessis/pkg-rename
pkg-rename old-package-name
จากเอกสารประกอบ:
สิ่งนี้จะได้รับแพคเกจเก่าเวอร์ชันล่าสุดจาก npm และเลิกใช้งานสิ่งนี้และเวอร์ชันที่เผยแพร่ก่อนหน้าทั้งหมดพร้อมข้อความ:
WARNING: This project has been renamed to new-package-name. Install using new-package-name instead.
คุณยังสามารถเพิ่ม--publish
แฟล็กเพื่อเผยแพร่ชื่อแพ็กเกจใหม่โดยเป็นส่วนหนึ่งของการดำเนินการเดียวกัน
pkg-rename old-package-name --publish
โปรดจำไว้ว่าการเปลี่ยนชื่อแพคเกจใน package.json แรก , แล้วเรียกใช้pkg-rename
คำสั่ง
ครั้งหนึ่งฉันเคยอยู่ในสถานการณ์เช่นนี้ ฉันเผยแพร่แพ็คเกจที่มีชื่อbowser-or-node
แทนbrowser-or-node
.
ไม่มีวิธีเปลี่ยนชื่อแพ็กเกจคุณต้องเลิกใช้งานและเผยแพร่แพ็กเกจใหม่
แม้ว่าจะมีทางเลือกอื่น หากคุณเพิ่งเผยแพร่แพ็กเกจของคุณ (น้อยกว่า 24 ชั่วโมงนับจากเวลาที่เผยแพร่) และหากแน่ใจว่าคุณสามารถลบแพ็กเกจและเผยแพร่แพ็กเกจใหม่โดยใช้ชื่อที่ถูกต้องคุณสามารถดำเนินการต่อได้ แต่ NPM จะไม่อนุญาตให้คุณลบแพ็กเกจเมื่อผ่านไป 24 ชั่วโมงนับตั้งแต่เวลาเผยแพร่
โชคดีที่ฉันพบว่าฉันเผยแพร่ชื่อผิดในเวลาไม่ถึง 20 นาที ผมจึงเพิ่งลบและเผยแพร่อีกครั้งด้วยชื่อใหม่
มีบางอย่างที่น่าอัศจรรย์เกิดขึ้นกับฉัน: ฉันสามารถเปลี่ยนชื่อแพ็คเกจได้ เดิมเป็นที่รู้จักกันในชื่อ stdout-renderer แต่ฉันเปลี่ยนทุกครั้งที่เป็นไปได้ของชื่อและเผยแพร่ซ้ำหลังจากเลิกใช้งานต้นฉบับแล้วและ voila จะปรากฏภายใต้ชื่อใหม่ (cli-artist) ซึ่งไม่ได้รับการสนับสนุนในรายการที่อัปเดตใหม่ ฉันไม่แน่ใจว่าจะเปลี่ยนช่องไหน แต่ฉันคิดว่ามันอยู่ใน package.json เพราะนั่นเป็นช่องเดียวที่ปลอกตรงกับกรณีของฉัน
หวังว่าจะช่วยได้!
<=
มากกว่า<
เพื่อที่จะแจ้งให้สำหรับรุ่นล่าสุดเกินไป?