NE PAS SUPPRIMER validate_template=true template_path=.github/ISSUE_TEMPLATE/bug_report.md Merci de contribuer à la communauté Firebase ! md5-cd82511516d4d120ac6f38b938897bc8 Ouais, nous ne sommes définitivement pas parfaits ! Veuillez utiliser ce modèle et inclure une reproduction minimale lors de l'ouverture du problème. Si vous savez comment résoudre le problème, veuillez créer une demande d'extraction, et nous serions ravis de l'examiner ! md5-d1dc1414712186318d009e8257a27e48 Génial, nous aimons entendre comment nous pouvons améliorer nos produits ! Cependant, n'utilisez pas ce modèle pour soumettre une demande de fonctionnalité. Veuillez soumettre vos demandes de fonctionnalités à : https://firebase.google.com/support/contact/bugs-features/ md5-a11e3d9ea91af19a593bf84612124e1a Nous en recevons beaucoup et nous aimons vous aider, mais GitHub n'est pas le meilleur endroit pour eux et ils sera fermé. Veuillez d'abord consulter le guide : https://firebase.google.com/docs/cli/ Si la documentation officielle ne vous aide pas, essayez de demander via notre canal d'assistance officiel : https://firebase.google.com/ support/ Emplacements supplémentaires pour vérifier les solutions ou l'assistance de la communauté : - Stack Overflow : https://stackoverflow.com/ - Firebase Slack Community : https://firebase.community/ *Veuillez éviter les publications en double sur plusieurs canaux !*
firebase-tools :
firebase --version
7.2.2
Plate-forme:
Environnements de développement MacOS (10.14.6 (18G87)) et Windows 10.
MCVE : Modèle de fonctions Firebase + une section "functions.ignore" dans firebase.json
Créez un projet Firebase.
Exécutez les fonctions firebase init avec les options par défaut et ajoutez-les à votre nouveau projet :
firebase init functions
Décommentez l'exemple de fonction helloWorld dans index.js
et déployez :
⋊> ~/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
Notez la taille des fonctions packagées déployées (22,95 Ko).
Modifiez firebase.json
pour inclure une section 'functions.ignore' :
{
"functions": {
"ignore": []
}
}
Déployez à nouveau :
⋊> ~/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
Notez que le package déployé est passé de 22,95 Ko à 9,07 Mo .
Je m'attends à ce que si les choses sont ignorées, le package déployé devient plus petit plutôt que plus grand.
La taille du package déployé augmente de plusieurs ordres de grandeur, passant de 22,95 Ko à 9,07 Mo.
Pour référence, la taille du dossier functions
incluant node_modules
local est de 29 Mo dans ce cas. Le dossier node_modules
lui-même fait 28,9 Mo sur le disque et environ 6 Mo sont compressés.
Cela affecte également les projets TypeScript, probablement parce que le problème est déclenché après la partie tsc
des choses.
Je n'ai pas encore trouvé de documentation bonne/définitive pour le fichier de configuration firebase.json
et plus particulièrement la section functions
. Il y a de la documentation sur la section hosting
ici . Ma compréhension de la structure/utilisation functions.ignore
est actuellement basée sur https://github.com/firebase/firebase-tools/issues/291#issuecomment -322526710.
Il existe un problème connexe #429 où @laurenzlong indique que la section ignore
devrait être opérationnelle/corrigée.
Où le package déployé est-il construit localement, avant le déploiement ? J'ai couru avec --debug et je n'ai trouvé aucun chemin de fichier utile.
Merci d'avoir considéré! Et mon plan de données de partage de téléphone vous remercie d'avoir résolu ce problème, car le déploiement de mon projet actuel est d'environ 55 Mo avant que je ne comprenne ce qui se passait :)
Le comportement que vous avez décrit est le comportement auquel je m'attendais.
La documentation ne décrit pas functions.ignore
, comme vous l'avez souligné ; cependant, il est utilisé par la CLI .
Officieusement (en ce sens qu'il est _non documenté_), firebase.ignore
a une valeur par défaut de ["node_modules"]
. Cela nous permet de limiter la quantité de choses que nous devons télécharger pendant le déploiement (ce qui, vous pouvez l'imaginer, pourrait devenir très volumineux, très rapidement). En définissant firebase.ignore
dans package.json
, il indique à la CLI que _rien_ doit être ignoré. Maintenant, le dossier node_modules
est inclus dans l'archive et envoyé à Functions.
Pour répondre à votre question : dans une description de haut niveau du processus, la CLI ne construit pas de package localement. Il fait à peu près ce qui suit :
firebase.json
).node_modules
) et le télécharge dans Functions.Une fois le code source téléchargé, l'infrastructure Functions exécute npm install
pour les package.json
et la source est prête à servir les utilisateurs (du moins, dans cette explication très pratique).
J'espère que cela répond à vos questions. Mais comme il n'y a pas de bogue lié à la CLI ici, je vais fermer ce problème.
Merci pour l'info @bkendall.
Sur la base de # 291, j'ai pensé à tort que la CLI _toujours_ excluait les node_modules et que le contenu de functions.ignore
était additif. L'ajout d'un modèle explicite pour node_modules fait ce que vous décrivez.
@bkendall Pourquoi ne pas le documenter ?
Commentaire le plus utile
Le comportement que vous avez décrit est le comportement auquel je m'attendais.
La documentation ne décrit pas
functions.ignore
, comme vous l'avez souligné ; cependant, il est utilisé par la CLI .Officieusement (en ce sens qu'il est _non documenté_),
firebase.ignore
a une valeur par défaut de["node_modules"]
. Cela nous permet de limiter la quantité de choses que nous devons télécharger pendant le déploiement (ce qui, vous pouvez l'imaginer, pourrait devenir très volumineux, très rapidement). En définissantfirebase.ignore
danspackage.json
, il indique à la CLI que _rien_ doit être ignoré. Maintenant, le dossiernode_modules
est inclus dans l'archive et envoyé à Functions.Pour répondre à votre question : dans une description de haut niveau du processus, la CLI ne construit pas de package localement. Il fait à peu près ce qui suit :
firebase.json
).node_modules
) et le télécharge dans Functions.Une fois le code source téléchargé, l'infrastructure Functions exécute
npm install
pour lespackage.json
et la source est prête à servir les utilisateurs (du moins, dans cette explication très pratique).J'espère que cela répond à vos questions. Mais comme il n'y a pas de bogue lié à la CLI ici, je vais fermer ce problème.