Как я могу ограничить доступ к частному репозиторию с пакетами npm в объеме на машине, которая не может получить к ней доступ? - PullRequest
0 голосов
/ 23 марта 2020

Допустим, у меня есть частный репозиторий NPM с областями действия, который находится за корпоративным брандмауэром. Я хотел бы установить свой проект на другом компьютере, который не будет подключаться к VPN, поэтому он не сможет получить доступ к этому частному репо.

Как мне настроить свой проект для простого импорта этих зависимостей из локальных папок и / или моего локального npm кэша и пропустить приватное хранилище?

То есть, если мой пакет. json файл имеет ...

"dependencies": {
   "@privateRepo/some-library-framework": "4.2.1"
}

.. и я не могу получить доступ к серверу, но могу получить файлы, которые необходимы и были бы установлены из другой папки node_modules, которая находится на машине, которая может получить доступ к репо.

I попытался взять файлы из пакетов в @privateRepo и использовать npm cache add D:\path\to\lib\with\packageDotJsonInside для каждого из них, но все равно получил ...

Not Found - GET https://registry.npmjs.org/@privateRepo%2some-library-framework - Not found

.. когда я пытался npm i остальное.

Я думаю, это означает, что мне нужно что-то настроить в .npmrc, как описано здесь ...

registry=https://registry.npmjs.org/
@test-scope:registry=http://nexus:8081/nexus/content/repositories/npm-test/
//nexus:8081/nexus/content/repositories/npm-test/:username=admin
//nexus:8081/nexus/content/repositories/npm-test/:_password=YWRtaW4xMjM=
email=…

... где вы обычно настраиваете аутентификацию, но где вы также настраиваете URL для пакета с областью действия. Я думаю, что я хочу настроить @privateRepo:registry=http://localhost/something/something здесь.

Но я думаю, что это также подразумевает, что мне, по крайней мере, нужно создать локальный веб-сервер (или npm репо?) Для ответа на запросы (а затем, может быть, я ищу что-то вроде verdaccio ?).

Итак, в простейшем случае, есть ли способ заставить приложение использовать кэшированную версию или мне нужно больше шимить? Если нет, то как проще всего создать локальное репо для обслуживания этих пакетов вместо частного репо?

1 Ответ

1 голос
/ 27 марта 2020

Нет ничего лучше, самый простой ответ делает , кажется, настраивает локальное npm репо. Затем вы можете настроить свой .npmrc, чтобы он указывал на localhost для частного реестра с областью действия, а не на «настоящую» версию VPN.

И, как выясняется, Verdaccio на самом деле делает именно это - вы могли бы также использовать его для размещения «настоящего» частного репо, в том числе за брандмауэром, но установка на вашем устройстве dev позволит вам предоставлять пакеты npm для любой новой кодовой базы локально .


Это подробно описано этим видео , которое связано на сайте документации Вердаччо . Вот быстрая версия:

  • Установить вердаччо: npm install --global verdaccio
  • Запустить вердаччо: verdaccio
    • Вы можете проверить его интерфейс на http://localhost:4873/ ( или в другом месте, если вы изменили значения по умолчанию)
  • Создать пользователя: npm adduser --registry http://localhost:4873
  • Логин: npm login --registry http://localhost:4873
    • Теперь вы можете войти в систему как пользователь в веб-интерфейсе тоже, если хотите.
  • Перейдите к файлам ваших пакетов. Перейдите в папку, в которой указан пакет c.
    • То есть, если вы извлекаете все свои пакеты из node_modules другого проекта, вам нужно go в каждую папку, в которой находится файл package.json отдельного пакета, опубликовать sh it.
  • Publi sh пакет: npm publish --registry http://localhost:4873
    • Вы можете перепроверить, что он "взял", обновив веб-интерфейс.
  • Повторите для каждого дополнительного пакета.

Вот и все! Теперь у вас есть репо npm для пакетов, которые вы можете использовать для удаления требования VPN для запуска npm i. Просто добавьте новые версии пакетов в ваш локальный npm и опубликуйте sh их соответствующим образом.

Вам нужно будет создать запись с ограничением для этого реестра в вашем .npmrc, но вы уже делали это для вашего репо за брандмауэром, так что ничего страшного, верно?

Готовы сдвинуть чек для лучшего ответа, но, похоже, это все-таки работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...