Есть ли способ переименовать уже опубликованный модуль NPM? Я хочу изменить имя своего модуля, чтобы оно более точно соответствовало API, который он предоставляет, но не хочу бросать в беде людей, которые уже установили его.
Есть ли способ переименовать уже опубликованный модуль NPM? Я хочу изменить имя своего модуля, чтобы оно более точно соответствовало API, который он предоставляет, но не хочу бросать в беде людей, которые уже установили его.
Ответы:
Нет никакого открытого способа сделать это. Когда я сталкивался с этим в прошлом, я использовал следующий подход:
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
Это удалит пакет из реестра 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, но я изменил все возможные варианты имени и повторно опубликовал его после того, как устарел оригинал, и вуаля он отображается под своим новым именем (cli-artist), не рекомендованным во вновь обновленном списке. Я не уверен, какое поле нужно изменить, но я бы предположил, что это будет в package.json, потому что это единственное поле, для которого в моем случае подходит корпус.
надеюсь, это поможет!
<=
, чем<
чтобы он тоже уведомлял о последней версии?