Извлечение зависимостей из внутреннего репозитория через pubspe c .yaml - PullRequest
2 голосов
/ 21 января 2020

Я нахожусь в корпоративном брандмауэре, который не позволяет мне извлекать пакеты из pub.dev. Тем не менее, мне дали возможность использовать внутренний репозиторий, где я могу извлекать пакеты из файлов tar.gz.

Однако после прочтения https://dart.dev/tools/pub/dependencies#hosted-packages я попытался добавить это в мой pubspec.yaml файл:

dependencies:
  flutter:
    sdk: flutter

  http:
    hosted:
      name: http
      url: http://repository.internal-repo.com/repository/googleapis-storage/packages/
    version: ^0.12.0+4

Если бы я нажал на ссылку напрямую через Chrome (этот URL находится во внутренней сети) http://repository.internal-repo.com/repository/googleapis-storage/packages/http-0.12.0+4.tar.gz пакет загружается как файл tar.gz

Но когда я запускаю pub get:

502 notresolvable trying to find package http-0.12.0+4.tar.gz at http://repository.internal-repo.com/repository/googleapis-storage/packages/.
pub get failed (server unavailable) -- attempting retry 1 in 1 second...

я вижу, что вы можете извлечь из публикации c Github напрямую, однако он также заблокирован нашим прокси.

Я что-то не так делаю или эта функция недоступна?

1 Ответ

1 голос
/ 21 января 2020

Ссылка do c, на которую вы ссылаетесь, говорит:

или другой HTTP-сервер, который использует тот же API

IE, ваш внутренний сервер должен реализовать API pub , Кажется, что если вы поставите

  http:
    hosted:
      name: http
      url: http://repository.internal-repo.com/foo/
    version: ^0.12.0+4

, то pub сделает запрос на http://repository.internal-repo.com/foo/api/packages/http Не ясно, что он там ожидает.

Возможно, вы захотите распаковать ваш tar-файл на где-нибудь на общем диске и используйте вместо этого синтаксис path, например (при условии, что вы разархивировали в папку http_12_0_4 общей папки pub и смонтировали ее):

  http:
    path: /Volumes/pub/http_12_0_4

Никакая версия не требуется потому что вы жестко запрограммировали это в имя папки.

...