Как правильно сделать встряхивание дерева, чтобы уменьшить размер пакета и отдельную точку входа для каждой облачной функции - PullRequest
1 голос
/ 03 июня 2019

Я использую Google Firebase Cloud Functions с TypeScript, и я обнаружил, что, хотя каждая функция развернута отдельно, все они используют одни и те же пакеты и зависимости, даже если некоторые функции их не используют и не импортируют.

В моем случае одна облачная функция использует Redis, а другие нет.У меня 10 функций.Все 10 функций в конечном итоге импортируют связанный с Redis код, даже если они не импортируют их.

Поскольку все функции имеют одну и ту же точку входа, index.js.В настоящее время кажется невозможным иметь отдельные расслоенные древовидные пакеты / точки входа для каждой функции.

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

Есть ли способ не использовать общую точку входа index.js и использовать совершенно разные пакеты с помощью таких пакетов, как webpack?

1 Ответ

0 голосов
/ 03 июня 2019

Вы можете создать отдельную локальную рабочую область Firebase (с firebase init) для каждой функции, которая должна развертываться отдельно от других. Вам нужно будет указать CLI не перезаписывать другие функции при развертывании, используя --only functions:yourFunctionName для его развертывания.

Или вы можете развернуть функцию, используя инструменты Cloud (gcloud) вместо инструментов Firebase, но вы не сможете использовать функции firebase и его привязки TypeScript.

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

Я не рекомендую использовать веб-пакет. Не стоит тратить время на настройку.

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