Existe alguma maneira de renomear um módulo NPM que já foi publicado? Desejo alterar o nome do meu módulo para corresponder com mais precisão à API que ele expõe, mas não gostaria de deixar as pessoas que já o instalaram em apuros.
Existe alguma maneira de renomear um módulo NPM que já foi publicado? Desejo alterar o nome do meu módulo para corresponder com mais precisão à API que ele expõe, mas não gostaria de deixar as pessoas que já o instalaram em apuros.
Respostas:
Não há nenhuma maneira exposta de fazer isso. Quando encontrei isso no passado, minha abordagem foi:
npm deprecate% ProjectName% @ "<= put-latest-version-here" "AVISO: Este projeto foi renomeado para% NewProjectName%. Instale usando% NewProjectName%."
Em palavras simples, não, você não pode. Mas o npm fornece uma solução diferente chamada npm deprecate
.
O que ele faz é marcar uma determinada versão ou intervalos de versão desse pacote como obsoleto. A seguir, se alguém tentar instalar este pacote, receberá um pacote de aviso obsoleto junto com sua mensagem personalizada, na qual você pode especificar facilmente o nome do novo pacote.
Uso:
npm deprecate my-package-name@"< latest-version" "your message"
Sua mensagem pode ser qualquer coisa como:
WARNING: This project has been renamed to your-new-package-name. Install using new-package-name instead.
Em menos de 24 horas, executei o seguinte comando para excluir o pacote errado.
npm unpublish <wrong package name> --force
Da documentação:
Os dados de registro são imutáveis, ou seja, uma vez publicados, um pacote não pode ser alterado. Fazemos isso por razões de segurança e estabilidade dos usuários que dependem desses pacotes.
No entanto, os pacotes recém-publicados - dentro de 72 horas - podem ser cancelados executando:
npm unpublish <package_name> -f
Isso removerá o pacote do registro do NPM se ele foi publicado há menos de 72 horas . Em seguida, você pode alterar o nome do seu pacote e publicá-lo novamente.
Cuidado: você precisa esperar 24 horas se tentar republicar um pacote com o mesmo nome
Alguém construiu um pequeno plug-in npm útil para fazer isso facilmente 😊
https://www.npmjs.com/package/@tiaanduplessis/pkg-rename
npm -g install @tiaanduplessis/pkg-rename
pkg-rename old-package-name
Da documentação:
Isso obterá a versão mais recente do pacote antigo do npm e tornará obsoleto esta e todas as versões anteriores publicadas com uma mensagem:
WARNING: This project has been renamed to new-package-name. Install using new-package-name instead.
Você também pode adicionar o --publish
sinalizador para publicar o novo nome do pacote como parte da mesma ação.
pkg-rename old-package-name --publish
Lembre-se, renomeie o pacote em package.json primeiro e , em seguida , execute o pkg-rename
comando.
Uma vez estive nesta situação. Publiquei um pacote com o nome em bowser-or-node
vez de browser-or-node
.
Não há como renomear um pacote, você deve descontinuar e publicar um novo pacote.
Embora haja uma outra opção. Se você acabou de publicar seu pacote (menos de 24 horas após a publicação) e tem certeza de que está tudo bem para excluir o pacote e publicar um novo com o nome correto, você pode ir em frente e fazer isso. Mas o NPM não permitirá que você exclua o pacote, uma vez que já se passaram 24 horas desde o momento da publicação.
Felizmente descobri que publiquei com o nome errado em menos de 20 minutos. Então, acabei de deletar e publicar novamente com um novo nome.
Algo maravilhoso acabou de acontecer comigo: consegui renomear um pacote. Ele era originalmente conhecido como stdout-renderer, mas mudei todas as ocorrências possíveis do nome e o republicei após ter descontinuado o original e pronto, ele aparece com seu novo nome (cli-artist) não substituído na lista recém-atualizada. Não tenho certeza de qual campo alterar, mas imagino que seja em package.json porque esse é o único em que o invólucro corresponde no meu caso.
espero que ajude!
<=
do<
que notificar sobre a versão mais recente também.