NO ELIMINAR validate_template=true template_path=.github/ISSUE_TEMPLATE/bug_report.md ¡Gracias por contribuir a la comunidad de Firebase! md5-cd82511516d4d120ac6f38b938897bc8 ¡Sí, definitivamente no somos perfectos! Utilice esta plantilla e incluya una reproducción mínima al abrir el problema. Si sabe cómo resolver el problema, cree una solicitud de extracción y estaremos encantados de revisarla. md5-d1dc1414712186318d009e8257a27e48 Genial, ¡nos encanta saber cómo podemos mejorar nuestros productos! Sin embargo, no utilice esta plantilla para enviar una solicitud de función. Envíe sus solicitudes de funciones a: https://firebase.google.com/support/contact/bugs-features/ md5-a11e3d9ea91af19a593bf84612124e1a Recibimos muchas de ellas y nos encanta ayudarlo, pero GitHub no es el mejor lugar para ellas y estara cerrado. Primero, consulte la guía: https://firebase.google.com/docs/cli/ Si la documentación oficial no ayuda, intente preguntar a través de nuestro canal de soporte oficial: https://firebase.google.com/ support/ Ubicaciones adicionales para buscar soluciones o asistencia de la comunidad: - Stack Overflow: https://stackoverflow.com/ - Firebase Slack Community: https://firebase.community/ *¡Evite publicaciones duplicadas en múltiples canales!*
Firebase-herramientas:
firebase --version
7.2.2
Plataforma:
Ambos entornos de desarrollo MacOS (10.14.6 (18G87)) y Windows 10.
MCVE: plantilla de funciones de Firebase + una sección 'functions.ignore' en firebase.json
Crea un proyecto de base de fuego.
Ejecute las funciones de inicio de Firebase con las opciones predeterminadas y agréguelas a su nuevo proyecto:
firebase init functions
Descomente la función de muestra helloWorld en index.js
e implemente:
⋊> ~/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
Tenga en cuenta el tamaño de las funciones empaquetadas implementadas (22,95 KB).
Edite firebase.json
para incluir una sección 'functions.ignore':
{
"functions": {
"ignore": []
}
}
Implementar de nuevo:
⋊> ~/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
Tenga en cuenta que el paquete implementado ha aumentado de 22,95 KB a 9,07 MB .
Espero que si se ignoran las cosas, el paquete implementado se vuelve más pequeño en lugar de más grande.
El paquete implementado aumenta de tamaño en varios órdenes de magnitud de 22,95 KB a 9,07 MB.
Como referencia, el tamaño de la carpeta functions
incluido el node_modules
local, es de 29 MB en este caso. La carpeta node_modules
en sí ocupa 28,9 MB en el disco y tiene ~6 MB comprimidos con gzip.
Esto también afecta a los proyectos de TypeScript, presumiblemente porque el problema se activa después de la parte tsc
.
Todavía no he encontrado ninguna documentación buena/definitiva para el archivo de configuración firebase.json
y específicamente la sección functions
. Hay algo de documentación de la sección hosting
aquí . Mi comprensión de la estructura/uso de functions.ignore
se basa actualmente en https://github.com/firebase/firebase-tools/issues/291#issuecomment -322526710.
Hay un problema relacionado #429 donde @laurenzlong indica que la sección ignore
debería estar operativa/arreglada.
¿Dónde se crea localmente el paquete implementado antes de implementarlo? Ejecuté --debug y no pude encontrar ninguna ruta de archivo útil.
¡Gracias por considerar! Y mi plan de datos de anclaje de teléfono le agradece por resolver esto, ya que la implementación de mi proyecto actual es de ~55 MB antes de que me diera cuenta de lo que estaba pasando :)
El comportamiento que describiste es el comportamiento que esperaría.
La documentación no describe functions.ignore
, como señaló; sin embargo, es utilizado por la CLI .
Extraoficialmente (ya que está _indocumentado_), firebase.ignore
tiene un valor predeterminado de ["node_modules"]
. Esto nos permite limitar la cantidad de cosas que tenemos que cargar durante la implementación (que, como puede imaginar, podría volverse muy grande, muy rápidamente). Al configurar firebase.ignore
en package.json
, le dice a la CLI que _nothing_ debe ignorarse. Ahora, la carpeta node_modules
se incluye en el archivo y se envía a Funciones.
Para responder a su pregunta: en una descripción de alto nivel del proceso, la CLI no crea un paquete localmente. Hace aproximadamente lo siguiente:
firebase.json
).node_modules
) y lo sube a Funciones.Una vez que se carga el código fuente, la infraestructura de Functions ejecuta npm install
para package.json
y la fuente está lista para funcionar y servir a los usuarios (al menos, en esta explicación súper manual).
Espero que eso responda a sus preguntas. Pero como no hay ningún error relacionado con CLI aquí, voy a cerrar este problema.
Gracias por la información @bkendall.
Basado en el n.° 291, pensé erróneamente que la CLI _siempre_ excluía node_modules, y que el contenido de functions.ignore
era aditivo. Agregar un patrón explícito para node_modules hace lo que describe.
@bkendall ¿Por qué no documentarlo?
Comentario más útil
El comportamiento que describiste es el comportamiento que esperaría.
La documentación no describe
functions.ignore
, como señaló; sin embargo, es utilizado por la CLI .Extraoficialmente (ya que está _indocumentado_),
firebase.ignore
tiene un valor predeterminado de["node_modules"]
. Esto nos permite limitar la cantidad de cosas que tenemos que cargar durante la implementación (que, como puede imaginar, podría volverse muy grande, muy rápidamente). Al configurarfirebase.ignore
enpackage.json
, le dice a la CLI que _nothing_ debe ignorarse. Ahora, la carpetanode_modules
se incluye en el archivo y se envía a Funciones.Para responder a su pregunta: en una descripción de alto nivel del proceso, la CLI no crea un paquete localmente. Hace aproximadamente lo siguiente:
firebase.json
).node_modules
) y lo sube a Funciones.Una vez que se carga el código fuente, la infraestructura de Functions ejecuta
npm install
parapackage.json
y la fuente está lista para funcionar y servir a los usuarios (al menos, en esta explicación súper manual).Espero que eso responda a sus preguntas. Pero como no hay ningún error relacionado con CLI aquí, voy a cerrar este problema.