Có cách nào để đổi tên mô-đun NPM đã được xuất bản không? Tôi muốn thay đổi tên của mô-đun của mình để khớp chính xác hơn với API mà nó hiển thị nhưng không muốn để những người đã cài đặt nó lúng túng.
Có cách nào để đổi tên mô-đun NPM đã được xuất bản không? Tôi muốn thay đổi tên của mô-đun của mình để khớp chính xác hơn với API mà nó hiển thị nhưng không muốn để những người đã cài đặt nó lúng túng.
Câu trả lời:
Không có bất kỳ cách tiếp xúc nào để làm điều đó. Khi tôi gặp phải điều này trong quá khứ, cách tiếp cận tôi đã thực hiện là:
npm không dùng nữa% ProjectName% @ "<= put-new-version-here" "CẢNH BÁO: Dự án này đã được đổi tên thành% NewProjectName%. Thay vào đó, hãy cài đặt bằng% NewProjectName%."
Nói một cách đơn giản là không bạn không thể. Nhưng npm cung cấp cho bạn một giải pháp khác được gọi là npm deprecate
.
Những gì nó làm là nó đánh dấu một phiên bản cụ thể hoặc các phạm vi phiên bản của gói đó là không được dùng nữa. Vì vậy, tiếp theo nếu ai đó cố gắng cài đặt gói này, họ sẽ nhận được một gói cảnh báo không được dùng nữa cùng với thông báo tùy chỉnh của bạn, trong đó bạn có thể dễ dàng chỉ định tên gói mới của mình.
Sử dụng:
npm deprecate my-package-name@"< latest-version" "your message"
Thông điệp của bạn có thể là bất kỳ thứ gì như:
WARNING: This project has been renamed to your-new-package-name. Install using new-package-name instead.
Trong vòng chưa đầy 24 giờ, tôi đã chạy lệnh sau để xóa gói sai.
npm unpublish <wrong package name> --force
Từ tài liệu:
Dữ liệu đăng ký là bất biến, có nghĩa là một khi được xuất bản, một gói không thể thay đổi. Chúng tôi làm điều này vì lý do bảo mật và ổn định của những người dùng phụ thuộc vào các gói đó.
Tuy nhiên, các gói mới được xuất bản - trong vòng 72 giờ - có thể được hủy xuất bản bằng cách chạy:
npm unpublish <package_name> -f
Thao tác này sẽ xóa gói khỏi sổ đăng ký NPM nếu gói được xuất bản cách đây chưa đầy 72 giờ . Sau đó, bạn có thể thay đổi tên gói của mình và xuất bản lại.
Thận trọng: Bạn cần đợi 24 giờ nếu cố xuất bản lại gói có cùng tên
Ai đó đã xây dựng một plugin npm nhỏ tiện dụng để thực hiện việc này một cách dễ dàng 😊
https://www.npmjs.com/package/@tiaanduplessis/pkg-rename
npm -g install @tiaanduplessis/pkg-rename
pkg-rename old-package-name
Từ tài liệu:
Thao tác này sẽ lấy phiên bản mới nhất của gói cũ từ npm và không dùng nữa cũng như tất cả các phiên bản đã xuất bản trước đó với thông báo:
WARNING: This project has been renamed to new-package-name. Install using new-package-name instead.
Bạn cũng có thể thêm --publish
cờ để xuất bản tên gói mới như một phần của hành động tương tự.
pkg-rename old-package-name --publish
Hãy nhớ rằng, trước tiên hãy đổi tên gói trong package.json , sau đó chạy pkg-rename
lệnh.
Tôi đã từng ở trong tình huống này. Tôi đã xuất bản một gói với tên bowser-or-node
thay vì browser-or-node
.
Không có cách nào để đổi tên một gói, bạn phải ngừng sử dụng và xuất bản một gói mới.
Mặc dù có một lựa chọn khác. Nếu bạn vừa xuất bản gói của mình (chưa đầy 24 giờ kể từ thời điểm xuất bản) và nếu bạn chắc chắn rằng mình ổn với việc xóa gói và xuất bản gói mới với tên phù hợp, bạn có thể tiếp tục và thực hiện. Nhưng NPM sẽ không cho phép bạn xóa gói sau khi đã được 24 giờ kể từ thời điểm xuất bản.
May mắn thay, tôi đã phát hiện ra rằng tôi đã xuất bản với tên sai trong vòng chưa đầy 20 phút. Vì vậy, tôi vừa xóa và xuất bản lại với tên mới.
Một điều kỳ diệu vừa xảy ra với tôi: Tôi đã đổi tên được một gói. Ban đầu nó được gọi là stdout-render, nhưng tôi đã thay đổi mọi trường hợp có thể xảy ra của tên và xuất bản lại nó sau khi không dùng tên gốc và thì nó hiển thị dưới tên mới (cli-artist) không được dùng trong danh sách mới cập nhật. Tôi không chắc sẽ thay đổi trường nào, nhưng tôi sẽ tưởng tượng nó nằm trong package.json bởi vì đó là trường duy nhất mà vỏ khớp trong trường hợp của tôi.
hy vọng rằng sẽ giúp!
<=
hơn là<
để nó thông báo cho phiên bản mới nhất?