НЕ УДАЛЯТЬ validate_template=true template_path=.github/ISSUE_TEMPLATE/bug_report.md Спасибо за участие в сообществе Firebase! md5-cd82511516d4d120ac6f38b938897bc8 Да, мы определенно не идеальны! Пожалуйста, используйте этот шаблон и включите минимальную репродукцию при открытии выпуска. Если вы знаете, как решить эту проблему, пожалуйста, создайте запрос на слияние, и мы будем рады его рассмотреть! md5-d1dc1414712186318d009e8257a27e48 Отлично, нам нравится слышать, как мы можем улучшить наши продукты! Однако не используйте этот шаблон для отправки запроса функции. Пожалуйста, отправляйте свои запросы функций по адресу: https://firebase.google.com/support/contact/bugs-features/ md5-a11e3d9ea91af19a593bf84612124e1a У нас их много, и мы рады помочь вам, но GitHub не лучшее место для них, и они будет закрыто. Сначала ознакомьтесь с руководством: https://firebase.google.com/docs/cli/ Если официальная документация не поможет, попробуйте обратиться через наш официальный канал поддержки: https://firebase.google.com/ support/ Дополнительные места для поиска решений или помощи сообщества: - Переполнение стека: https://stackoverflow.com/ - Сообщество Firebase Slack: https://firebase.community/ *Пожалуйста, избегайте дублирования публикаций по нескольким каналам!*
firebase-инструменты:
firebase --version
7.2.2
Платформа:
Обе среды разработки MacOS (10.14.6 (18G87)) и Windows 10.
MCVE: шаблон функций Firebase + раздел «functions.ignore» в firebase.json
Создайте проект firebase.
Запустите функции инициализации firebase с параметрами по умолчанию и добавьте их в свой новый проект:
firebase init functions
Раскомментируйте пример функции helloWorld в index.js
и разверните:
⋊> ~/D/f/functions firebase deploy 11:02:38
=== Deploying to 'test-function-deploy-3a957'...
i deploying functions
i functions: ensuring necessary APIs are enabled...
✔ functions: all necessary APIs are enabled
i functions: preparing functions directory for uploading...
i functions: packaged functions (22.95 KB) for uploading
✔ functions: functions folder uploaded successfully
i functions: updating Node.js 8 function helloWorld(us-central1)...
✔ functions[helloWorld(us-central1)]: Successful update operation.
✔ Deploy complete!
Project Console: https://console.firebase.google.com/project/test-function-deploy-3a957/overview
⋊> ~/D/f/functions
Обратите внимание на размер развернутых упакованных функций (22,95 КБ).
Отредактируйте firebase.json
, включив в него раздел functions.ignore:
{
"functions": {
"ignore": []
}
}
Развернуть снова:
⋊> ~/D/f/functions firebase deploy 11:03:24
=== Deploying to 'test-function-deploy-3a957'...
i deploying functions
i functions: ensuring necessary APIs are enabled...
✔ functions: all necessary APIs are enabled
i functions: preparing functions directory for uploading...
i functions: packaged functions (9.07 MB) for uploading
✔ functions: functions folder uploaded successfully
i functions: updating Node.js 8 function helloWorld(us-central1)...
✔ functions[helloWorld(us-central1)]: Successful update operation.
✔ Deploy complete!
Project Console: https://console.firebase.google.com/project/test-function-deploy-3a957/overview
⋊> ~/D/f/functions
Обратите внимание, что развернутый пакет увеличился с 22,95 КБ до 9,07 МБ .
Я ожидаю, что если что-то игнорировать, развернутый пакет станет меньше, а не больше.
Развернутый пакет увеличивается в размере на несколько порядков с 22,95 КБ до 9,07 МБ.
Для справки: размер папки functions
, включая локальную папку node_modules
, в данном случае составляет 29 МБ. Сама папка node_modules
имеет размер 28,9 МБ на диске и примерно 6 МБ в сжатом виде.
Это также влияет на проекты TypeScript, предположительно потому, что проблема возникает после части tsc
.
Я еще не нашел хорошей/окончательной документации для файла конфигурации firebase.json
и, в частности, для раздела functions
. Некоторая документация по разделу hosting
есть здесь . Мое понимание структуры/использования functions.ignore
в настоящее время основано на https://github.com/firebase/firebase-tools/issues/291#issuecomment -322526710.
Существует связанная проблема № 429, где @laurenzlong указывает, что раздел ignore
должен быть рабочим/исправленным.
Где развернутый пакет создается локально перед развертыванием? Я запускал с --debug и не смог определить какие-либо полезные пути к файлам.
Спасибо за рассмотрение! И мой тарифный план привязки телефона благодарит вас за решение этой проблемы, так как мой текущий проект развертывания составляет ~ 55 МБ, прежде чем я понял, что происходит :)
Поведение, которое вы описали, - это поведение, которое я ожидал.
Документация не описывает functions.ignore
, как вы указали; однако он используется CLI .
Неофициально (поскольку это _недокументировано_), firebase.ignore
по умолчанию имеет значение ["node_modules"]
. Это позволяет нам ограничить количество материалов, которые мы должны загрузить во время развертывания (которое, как вы можете себе представить, может очень быстро стать очень большим). Установив firebase.ignore
в package.json
, он сообщает CLI, что _nothing_ следует игнорировать. Теперь папка node_modules
включена в архив и отправлена в Functions.
Чтобы ответить на ваш вопрос: при высокоуровневом описании процесса CLI не создает пакет локально. Делает примерно следующее:
firebase.json
).node_modules
) и загружает его в Functions.Как только исходный код загружен, инфраструктура Функций запускает npm install
для package.json
, и исходный код готов к работе и обслуживанию пользователей (по крайней мере, в этом сверхсложном объяснении).
Я надеюсь, что это отвечает на ваши вопросы. Но поскольку здесь нет ошибки, связанной с CLI, я собираюсь закрыть эту проблему.
Спасибо за информацию @bkendall.
Основываясь на № 291, я ошибочно подумал, что CLI _всегда_ исключает node_modules и что содержимое functions.ignore
является аддитивным. Добавление явного шаблона для node_modules делает то, что вы описываете.
@bkendall Почему бы не задокументировать это?
Самый полезный комментарий
Поведение, которое вы описали, - это поведение, которое я ожидал.
Документация не описывает
functions.ignore
, как вы указали; однако он используется CLI .Неофициально (поскольку это _недокументировано_),
firebase.ignore
по умолчанию имеет значение["node_modules"]
. Это позволяет нам ограничить количество материалов, которые мы должны загрузить во время развертывания (которое, как вы можете себе представить, может очень быстро стать очень большим). Установивfirebase.ignore
вpackage.json
, он сообщает CLI, что _nothing_ следует игнорировать. Теперь папкаnode_modules
включена в архив и отправлена в Functions.Чтобы ответить на ваш вопрос: при высокоуровневом описании процесса CLI не создает пакет локально. Делает примерно следующее:
firebase.json
).node_modules
) и загружает его в Functions.Как только исходный код загружен, инфраструктура Функций запускает
npm install
дляpackage.json
, и исходный код готов к работе и обслуживанию пользователей (по крайней мере, в этом сверхсложном объяснении).Я надеюсь, что это отвечает на ваши вопросы. Но поскольку здесь нет ошибки, связанной с CLI, я собираюсь закрыть эту проблему.