Подтвердить что ты не робот

Переименование опубликованного модуля NPM

Можно ли переименовать модуль NPM, который уже опубликован? Я хочу изменить имя моего модуля, чтобы более точно соответствовать API, который он предоставляет, но не хотел бы оставлять людей, которые уже установили его в беде.

4b9b3361

Ответ 1

Нет никакого открытого способа сделать это. Когда я сталкивался с этим в прошлом, я использовал следующий подход:

npm deprecate% ProjectName% @"<= put-latest-version-here" "ПРЕДУПРЕЖДЕНИЕ. Этот проект был переименован в% NewProjectName%. Установите вместо него% NewProjectName%."

npm Устаревшие инструкции

Ответ 2

Простыми словами нет, вы не можете. Но npm предоставляет вам другое решение под названием npm deprecate.

Что он делает, это означает, что определенные версии или диапазоны версий этого пакета устарели. Итак, если кто-то попытается установить этот пакет, он получит предупреждающий пакет, устаревший вместе с вашим пользовательским сообщением, в котором вы можете легко указать новое имя пакета.

Использование:

npm deprecate [email protected]"< latest-version" "your message"

Ваше сообщение может быть любым:

WARNING: This project has been renamed to your-new-package-name. Install using new-package-name instead.

Ответ 3

Менее чем за 24 часа я выполнил следующую команду, чтобы удалить неправильный пакет.

npm unpublish <wrong package name> --force

Ответ 4

Я когда-то был в такой ситуации. Я опубликовал пакет с именем bowser-or-node вместо browser-or-node.

Нет способа переименовать пакет, вы должны отказаться от публикации и опубликовать новый пакет.

Хотя есть еще один вариант. Если вы только что опубликовали свой пакет (менее чем через 24 часа с момента публикации) и уверены, что можете удалить пакет и опубликовать новый с правильным именем, вы можете это сделать. Но NPM не позволит вам удалить пакет, если прошло 24 часа с момента публикации.

К счастью, я понял, что опубликовал с неправильным названием менее чем за 20 минут. Поэтому я просто удалил и опубликовал снова с новым именем.

Ответ 5

Из документации:

Данные реестра являются неизменными, то есть после публикации пакет не может быть изменен. Мы делаем это по соображениям безопасности и стабильности пользователей, которые зависят от этих пакетов.

Однако недавно опубликованные пакеты - в течение 72 часов - могут быть не опубликованы, запустив:

npm unpublish <package_name> -f

Это удалит пакет из реестра NPM, если он был опубликован менее 72 часов назад. Затем вы можете изменить имя пакета и опубликовать его снова.

Внимание: вам нужно подождать 24 часа, если вы попытаетесь переиздать пакет с тем же именем

Ответ 6

Кто-то создал удобный маленький плагин npm для этого doing

https://www.npmjs.com/package/@tiaanduplessis/pkg-rename

  1. Установите пакет, используя npm -g install @tiaanduplessis/pkg-rename
  2. Переименуйте ваш модуль npm в файле package.json и сохраните его
  3. запустите 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.

Ответ 7

Что-то удивительное случилось со мной: мне удалось переименовать пакет. Первоначально он был известен как stdout-renderer, но я изменил каждое возможное вхождение имени и переиздавал его после того, как устарел оригинал, и вуаля он появляется под своим новым именем (cli-artist), не обновленным в недавно обновленном списке. Я не уверен, какое поле изменить, но я представляю, что это будет в package.json, потому что это единственный случай, когда оболочка совпадает в моем случае.

надеюсь, это поможет!