Посетите https://www.mikenikles.com, чтобы увидеть мои последние сообщения в блоге.

tl; dr: Теперь он официально поддерживается 🎉!

В рамках миграции с AWS на GCP мы хотели использовать Google Cloud Functions (https://cloud.google.com/functions), чтобы помочь нам масштабировать нашу инфраструктуру более управляемым образом.

Облачные функции написаны на JavaScript и выполняются в стандартной среде выполнения Node.js.

Насколько это здорово? - так мы подумали. Вместо того, чтобы переносить наш монолит AWS, мы решили извлечь отдельные части и развернуть их как независимые сервисы, по частям. Наше существующее приложение написано на Node.js, и переход на GCF (Google Cloud Functions) звучал прямо. Если бы не наши частные пакеты NPM…

Примечание для ясности: GCF всегда отлично работал, если вы полагались только на общедоступные пакеты npm.

Частные пакеты NPM - проблема

Чтобы наши команды имели общий код, мы используем частные пакеты npm. GCF это не понравилось ... Существует обсуждение StackOverflow с обходным решением. Он отлично работает, если ваш код имеет зависимости верхнего уровня, которые являются частными пакетами npm. Если, как в нашем случае, у вас есть временные зависимости, которые также являются частными пакетами npm, вы либо проявляете творческий подход к своим скриптам, либо ищите альтернативы. В нашем случае мы развернули Google App Engine, что было временным обходным решением, так как он очень быстро становится очень дорогим ...

Частные пакеты NPM - решение

Вчера я случайно попал в документацию GCF (да, такое бывает) и нашел новую главу «Использование частных модулей». Чего ждать? Что?

Чтобы использовать частный модуль npm, вы должны предоставить учетные данные (токен авторизации) для реестра npm в файле .npmrc, расположенном в каталоге функции. Вы можете просто скопировать .npmrc файл, который был создан в вашем домашнем каталоге, когда вы вошли в npm, используя команду npm login.

Это вся глава, и она меняет правила игры!

Дайте мне знать в комментариях, если это упростит ваше решение о переходе на GCF. Есть вопросы? Спрашивайте, я рад помочь, где могу.