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

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