Generate a Google Cloud Function within a Nx workspace with dev tools:
- Create :
nx generate @imaware/gcp-function:http functionName
- Serve :
nx serve functionName
- Test :
nx test functionName
- Deploy :
nx deploy functionName
What is a Google Cloud Functions?
Cloud Functions is a serverless execution environment for building and connecting cloud services. With Cloud Functions you write simple, single-purpose functions that are attached to events emitted from your cloud infrastructure and services. Your function is triggered when an event being watched is fired.What is NX?
Nx is a set of extensible dev tools for monorepo, which helps you develop like Google, Facebook, and Microsoft. It has first-class support for many frontend and backend technologies, so its documentation comes in multiple flavours.-
Install Node.js version 10 or greater
-
Obtain authentication credentials. Create local credentials by running the following command and following the oauth2 flow (read more about the command here):
gcloud auth application-default login
Read more about Google Cloud Platform Authentication.
-
Create a Nx workspace.
npx create-nx-workspace@latest workspaceName cd workspaceName yarn add tslib yarn add -D @imaware/gcp-function @google-cloud/functions-framework supertest @nrwl/lint @nrwl/jest @types/express
Read more about Nx Workspace
nx generate @imaware/gcp-function:http functionName
nx generate @imaware/gcp-function:pubsub functionName
nx serve functionName
nx test functionName
nx build functionName
nx deploy functionName
The 'build' option bundle all your internal dependencies in main.js & create a new package.json with your external dependencies (version number from root/package.json.)
Reporting Errors to Stackdriver Error Reporting
// These WILL be reported to Stackdriver Error Reporting
console.error(new Error('I failed you'));
console.error('I failed you', new Error('I failed you too'));
throw new Error('I failed you'); // Will cause a cold start if not caught
nx lint functionName
nx format:write functionName
nx format:write functionName
nx format:check functionName
nx affected --target=build
nx build functionName --with-deps
gcloud functions deploy myFunction --set-env-vars foo=bar, zoo=lop
gcloud functions myFunction --update-env-vars foo=bar, zoo=lop
gcloud functions deploy myFunction --service-account emailOfServiceAccount
gcloud functions deploy myFunction --max-instances maxInstancesCount
gcloud functions deploy myFunction --clear-max-instances
gcloud functions logs read functionName
Joel Turcotte Gaucher - linkedin - joelturcotte.g@gmail.com