расположение глобального реестра пряжи?

#javascript #npm #yarnpkg

Вопрос:

Я обновил yarn , чтобы указать на свой пользовательский реестр, и проверил, как показано ниже

 $yarn config list -g

yarn config v1.22.10
info yarn config
{
  'version-tag-prefix': 'v',
  'version-git-tag': true,
  'version-commit-hooks': true,
  'version-git-sign': false,
  'version-git-message': 'v%s',
  'init-version': '1.0.0',
  'init-license': 'MIT',
  'save-prefix': '^',
  'bin-links': true,
  'ignore-scripts': false,
  'ignore-optional': false,
  registry: 'https://npm.xxx.io/',
  'strict-ssl': true,
  'user-agent': 'yarn/1.22.10 npm/? node/v14.17.4 darwin x64',
  lastUpdateCheck: 1628819793479,
  'unsafe-disable-integrity-migration': true
}
info npm config
{
  registry: 'https://npm.xxx.io/'
}
✨  Done in 0.05s.
 

Как вы можете видеть выше, registry указывает на https://npm.xxx.io/ то , что я затем приступаю к установке пакета npm, выполнив команду yarn global add @my-comp/rn-cli

А ниже приведено сообщение об ошибке, которое я получил

 yarn global v1.22.10
[1/4] 🔍  Resolving packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/@my-comp/rn-cli: Not found".
info If you think this is a bug, please open a bug report with the information provided in "/Users/xxxx/.config/yarn/global/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/global for documentation about this command.
 

Из приведенного выше сообщения об ошибке следует, что yarn я все еще пытаюсь найти пакет, https://registry.yarnpkg.com который меня смутил. Интересно, есть ли у кого-нибудь какие-нибудь идеи?

Обновления

Я понял две вещи, как показано ниже:

  • если я запущу yarn add @my-comp/rn-cli , диспетчер пакетов сможет найти пакет, что означает, что я сузил проблему до «глобальных» настроек
  • yarn config get registry -g или yarn config get registry -gxxwhatever оба вернут один и тот же результат, который, как мне кажется, конфигурация yarn фактически проигнорировала глобальный флаг -g

Комментарии:

1. Было ли у вас имя файла .npmrc для блокировки источника npm в вашем проекте ?

2. У меня есть .npmrc значение registry=https://npm.xxx.io , аналогичное значению, когда я перечисляю, как указано выше, @cookie

3. можете ли вы попробовать yarn --registry=https://npm.xxx.io

4. @cookie: Я получил следующее сообщение yarn install v1.22.10 [1/4] 🔍 Resolving packages... success Already up-to-date.

5. @cookie: просто для ясности, это сообщение показывает, что ничего не изменилось, и я все еще получаю 404 при установке пакета

Ответ №1:

Нашел обходной путь, настроив его вручную npm_config_registry . Полная команда, как показано ниже

 npm_config_registry=https://npm.xxx.io/ yarn global add @my-comp/rn-cli
 

Нашел этот обходной путь по адресу https://github.com/yarnpkg/yarn/issues/5056 для других, чтобы ссылаться

Также, как указано в https://github.com/yarnpkg/yarn/issues/4862 , команда yarn не будет поддерживать эту проблему, так как они решили проблему в yarn v2

Ответ №2:

Возможно, вы можете использовать yarn config set registry [npm.source] -g для блокировки источника npm вашего глобального пакета.