npm publish дает "пакеты с незаданной областью не могут быть приватными"
Я хочу опубликовать нормальный, публичный пакет для npm. Когда я делаю npm publish
я получаю:
npm ERR! publish Failed PUT 400
npm ERR! code E400
npm ERR! unscoped packages cannot be private : my-package
Ответы
Ответ 1
Похоже, что (по состоянию на ноябрь 2018 года) вы должны сделать:
npm publish --access public
Это говорит реестру npm, что вы хотите, чтобы ваш пакет был доступен для скачивания всеми. Раньше это было по умолчанию, и из документации все еще должно быть, так что, вероятно, это просто ошибка в npm. Есть еще немного не очень хорошо написанной документации о пакетах scoped/unscoped и public/private.
Вместо использования --access
вы также можете добавить параметр в свой package.json
, как показано в ответе @smnbbrv ниже. Но если я прав, и это просто ошибка, вы можете использовать --access
как временное решение.
Ответ 2
Со всеми кредитами на @mb21 и его решением есть небольшое дополнение к его ответу.
Предлагаемый
npm publish --access public
работает отлично. Однако не всегда возможно заставить его работать в среде CI, например, когда вы используете семантическую версию. Правильное решение там будет использовать тот же параметр access
но внутри вашего package.json
publishConfig
(кстати, это также облегчает публикацию вручную в будущем):
{
"name": "...",
...
"publishConfig": {
"access": "public"
}
}
И теперь вы можете использовать его в инструментах CI или просто
npm publish
Мне потребовалось некоторое время, чтобы понять это, поэтому я надеюсь, что это сэкономит время для будущих читателей.