NÃO EXCLUIR validate_template=true template_path=.github/ISSUE_TEMPLATE/bug_report.md Obrigado por contribuir com a comunidade Firebase! md5-cd82511516d4d120ac6f38b938897bc8 Sim, definitivamente não somos perfeitos! Use este modelo e inclua uma reprodução mínima ao abrir o problema. Se você souber como resolver o problema, crie um Pull Request e teremos prazer em analisá-lo! md5-d1dc1414712186318d009e8257a27e48 Ótimo, adoramos saber como podemos melhorar nossos produtos! No entanto, não use este modelo para enviar uma solicitação de recurso. Envie suas solicitações de recursos para: https://firebase.google.com/support/contact/bugs-features/ md5-a11e3d9ea91af19a593bf84612124e1a Recebemos muitos deles e adoramos ajudar você, mas o GitHub não é o melhor lugar para eles e eles Será fechado. Dê uma olhada no guia primeiro: https://firebase.google.com/docs/cli/ Se a documentação oficial não ajudar, tente perguntar através do nosso canal de suporte oficial: https://firebase.google.com/ support/ Locais adicionais para verificar soluções ou assistência da comunidade: - Stack Overflow: https://stackoverflow.com/ - Firebase Slack Community: https://firebase.community/ *Evite postagens duplicadas em vários canais!*
ferramentas do firebase:
firebase --version
7.2.2
Plataforma:
Ambientes de desenvolvimento MacOS (10.14.6 (18G87)) e Windows 10.
MCVE: modelo de funções do Firebase + uma seção 'functions.ignore' em firebase.json
Crie um projeto do Firebase.
Execute as funções init do Firebase com opções padrão e adicione-as ao seu novo projeto:
firebase init functions
Remova o comentário da função de amostra helloWorld em index.js
e implante:
⋊> ~/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
Observe o tamanho das funções empacotadas implantadas (22,95 KB).
Edite firebase.json
para incluir uma seção 'functions.ignore':
{
"functions": {
"ignore": []
}
}
Implante novamente:
⋊> ~/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
Observe que o pacote implantado cresceu de 22,95 KB para 9,07 MB .
Espero que, se as coisas forem ignoradas, o pacote implantado fique menor em vez de maior.
O pacote implantado aumenta de tamanho em várias ordens de magnitude de 22,95 KB para 9,07 MB.
Para referência, o tamanho da pasta functions
incluindo node_modules
local é de 29 MB neste caso. A própria pasta node_modules
tem 28,9 MB em disco e ~ 6 MB compactada.
Isso também afeta projetos TypeScript, presumivelmente porque o problema é acionado após a parte tsc
das coisas.
Ainda não encontrei nenhuma documentação boa/definitiva para o arquivo de configuração firebase.json
e especificamente a seção functions
. Há alguma documentação da seção hosting
aqui . Meu entendimento da estrutura/uso functions.ignore
é atualmente baseado em https://github.com/firebase/firebase-tools/issues/291#issuecomment -322526710.
Há um problema relacionado nº 429 em que @laurenzlong indica que a seção ignore
deve estar operacional/corrigida.
Onde o pacote implantado é construído localmente, antes da implantação? Eu corri com --debug e não consegui descobrir nenhum caminho de arquivo útil.
Obrigado por considerar! E meu plano de dados de tethering por telefone agradece por resolver isso, pois minha implantação atual do projeto é de ~ 55 MB antes de descobrir o que estava acontecendo :)
O comportamento que você descreveu é o comportamento que eu esperaria.
A documentação não descreve functions.ignore
, como você apontou; no entanto, ele é usado pela CLI .
Não oficialmente (por ser _indocumentado_), firebase.ignore
tem um padrão de ["node_modules"]
. Isso nos permite limitar a quantidade de coisas que temos que carregar durante a implantação (que você pode imaginar que pode se tornar muito grande, muito rapidamente). Ao definir firebase.ignore
em package.json
, ele informa à CLI que _nothing_ deve ser ignorado. Agora, a pasta node_modules
é incluída no arquivo e enviada para o Functions.
Para responder à sua pergunta: em uma descrição de alto nível do processo, a CLI não cria um pacote localmente. Ele faz aproximadamente o seguinte:
firebase.json
).node_modules
) e o carrega para o Functions.Depois que o código-fonte é carregado, a infraestrutura do Functions executa npm install
para o package.json
e a fonte está pronta para servir aos usuários (pelo menos, nesta explicação super ondulada).
Espero que isso responda suas perguntas. Mas como não há nenhum bug relacionado à CLI aqui, vou encerrar este problema.
Obrigado pela informação @bkendall.
Com base em #291, pensei erroneamente que a CLI _sempre_ excluiu node_modules e que o material em functions.ignore
era aditivo. Adicionar um padrão explícito para node_modules faz o que você descreve.
@bkendall Por que não documentar?
Comentários muito úteis
O comportamento que você descreveu é o comportamento que eu esperaria.
A documentação não descreve
functions.ignore
, como você apontou; no entanto, ele é usado pela CLI .Não oficialmente (por ser _indocumentado_),
firebase.ignore
tem um padrão de["node_modules"]
. Isso nos permite limitar a quantidade de coisas que temos que carregar durante a implantação (que você pode imaginar que pode se tornar muito grande, muito rapidamente). Ao definirfirebase.ignore
empackage.json
, ele informa à CLI que _nothing_ deve ser ignorado. Agora, a pastanode_modules
é incluída no arquivo e enviada para o Functions.Para responder à sua pergunta: em uma descrição de alto nível do processo, a CLI não cria um pacote localmente. Ele faz aproximadamente o seguinte:
firebase.json
).node_modules
) e o carrega para o Functions.Depois que o código-fonte é carregado, a infraestrutura do Functions executa
npm install
para opackage.json
e a fonte está pronta para servir aos usuários (pelo menos, nesta explicação super ondulada).Espero que isso responda suas perguntas. Mas como não há nenhum bug relacionado à CLI aqui, vou encerrar este problema.