Можно ли переименовать модуль NPM, который уже опубликован? Я хочу изменить имя моего модуля, чтобы более точно соответствовать API, который он предоставляет, но не хотел бы оставлять людей, которые уже установили его в беде.
Переименование опубликованного модуля NPM
Ответ 1
Нет никакого открытого способа сделать это. Когда я сталкивался с этим в прошлом, я использовал следующий подход:
npm deprecate% ProjectName% @"<= put-latest-version-here" "ПРЕДУПРЕЖДЕНИЕ. Этот проект был переименован в% NewProjectName%. Установите вместо него% NewProjectName%."
Ответ 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
- Установите пакет, используя
npm -g install @tiaanduplessis/pkg-rename
- Переименуйте ваш модуль npm в файле package.json и сохраните его
- запустите
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, потому что это единственный случай, когда оболочка совпадает в моем случае.
надеюсь, это поможет!