이미 게시 된 NPM 모듈의 이름을 바꿀 수있는 방법이 있습니까? 노출하는 API와 더 정확하게 일치하도록 모듈의 이름을 변경하고 싶지만 이미 모듈을 설치 한 사람들을 Lurch에 남겨두고 싶지 않습니다.
이미 게시 된 NPM 모듈의 이름을 바꿀 수있는 방법이 있습니까? 노출하는 API와 더 정확하게 일치하도록 모듈의 이름을 변경하고 싶지만 이미 모듈을 설치 한 사람들을 Lurch에 남겨두고 싶지 않습니다.
답변:
그렇게하는 노출 된 방법이 없습니다. 과거에 이것을 만났을 때 내가 취한 접근 방식은 다음과 같습니다.
npm deprecate % 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
게시 된 지 72 시간이 지나지 않은 경우 NPM 레지스트리에서 패키지가 제거됩니다 . 그런 다음 패키지 이름을 변경하고 다시 게시 할 수 있습니다.
주의 : 동일한 이름으로 패키지를 다시 게시하려는 경우 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 분 이내에 잘못된 이름으로 출판했음을 알게되었습니다. 그래서 방금 삭제하고 새 이름으로 다시 게시했습니다.
<=
것보다 사용하는 것이 더 낫<
습니다.