Чи є спосіб перейменувати вже опублікований модуль NPM? Я хочу змінити назву свого модуля, щоб більш точно відповідати API, який він виставляє, але я не хотів би залишати людей, які вже встановили його, на недолік.
Чи є спосіб перейменувати вже опублікований модуль NPM? Я хочу змінити назву свого модуля, щоб більш точно відповідати API, який він виставляє, але я не хотів би залишати людей, які вже встановили його, на недолік.
Відповіді:
Не існує жодного відкритого способу зробити це. Коли я стикався з цим у минулому, підхід, який я застосовував, був:
npm припинить% 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 для цього легко doing
https://www.npmjs.com/package/@tiaanduplessis/pkg-rename
npm -g install @tiaanduplessis/pkg-renamepkg-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, тому що це єдине, де в моєму випадку відповідає кожух.
сподіваюся, що допомагає!
<=а не<так, щоб він також повідомляв про останню версію?