Как настроить частный модуль NPM с облачными функциями Firebase .npmrc? - PullRequest
3 голосов
/ 03 октября 2019

Я создал частный модуль npm для набора текста, который я использую для своих функций Firebase и проектов приложений. Когда я приступил к развертыванию функций Firebase, я получил большую ошибку для каждой функции, которая в основном говорит: ERR! remote: Invalid username or password.

Для того, что я прочитал, похоже, что мне нужно создать файл .npmrc и поместить его вКаталог / functions. (https://cloud.google.com/functions/docs/writing/specifying-dependencies-nodejs#using_private_modules)

Я не могу, однако, найти правильные инструкции о том, как это сделать. Из того, что я нашел, я сделал следующее:

  • run npm login
  • запустил токен npm create --read-only

Затем я получил токен, который выглядит следующим образом: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.

Затем я создаю файл с именем .npmrc вмой каталог функций и поместил в него //registry.npmjs.org/:_authToken=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.

Кроме того, я увидел, что сообщение об ошибке пытается использовать ssh для установки моего частного репозитория, я не настроил ssh и вместо этого использую https, потому чтоиз этого я изменил файл пакета на git+https://github.com/accounts-name/repo#commit-num, чтобы он использовал HTTPS.

Тем не менее, я все еще получаю то же сообщение об ошибке. Чего мне не хватает? Выше я собрал множество из множества Google. поиск.

1 Ответ

2 голосов
/ 05 октября 2019

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

  1. Проверьте файл package.json изваш модуль npm и опубликуйте его:

    • Удалите свойство "private" или установите его на false, потому что закрытые модули в npm никогда не публикуются. Это не очевидно, но это правда.
    • Следующим шагом является применение ограниченного доступа к пакету. Чтобы сделать это, добавьте свойство в файл package.json:
    "publishConfig": {
        "access": "restricted"
    },
    
    • Убедитесь, что учетная запись npm используется для публикации поддерживает частные пакеты.
    • Теперь откройте терминал в корневом каталоге вашего пакета, введите npm login и войдите в npm. Проверьте, правильно ли вы указали версию package.json.
    • Run npm publish. Пакет должен быть опубликован в течение нескольких секунд. Не беспокойтесь, благодаря свойству publishConfig никто не может получить к нему доступ.
  2. Теперь пришло время разрешить установку пакетов в вашем проекте

    • Goв каталог проекта и откройте package.json файл
    • Убедитесь, что у вас есть имя и версия вашего пакета в dependencies списке
    • Откройте браузер, перейдите к https://npmjs.com, войдите в свою учетную запись, перейдите на страницу настроек своей учетной записи и откройте вкладку tokens
    • Создайте новый токен и скопируйте его
    • Теперь снова перейдите в каталог вашего проекта, натого же уровня, где расположен файл package.json (это важно!), и создайте там файл .npmrc.
    • Поместите такую ​​строку в файл .npmrc:
    //registry.npmjs.org/:_authToken=TOKEN_HERE
    

    Готово!

  3. Развертывание с удаленными службами CI / CD

    • Самый простой подход - не добавлять .npmrc в .gitignore. В этом случае файл всегда будет находиться в репозитории, поэтому npm install будет работать без проблем на любом компьютере, на котором был клонирован проект
    • Если вы не хотите, чтобы в хранилище была строка токена, вы можете переместить ее впеременная окружения вашей службы CI / CD, а затем свяжите файл .npmrc с этой переменной. Например, вы можете поместить сгенерированный токен в переменную NPM_TOKEN env (просто токен из npmjs, а не всю строку из .npmrc!), А затем изменить файл .npmrc следующим образом: //registry.npmjs.org/:_authToken=${NPM_TOKEN}.

Таким образом, с этими шагами вы сможете установить свои ограниченные пакеты без каких-либо проблем. Удачи!

...