Generate a Google Cloud Function within a Nx workspace with dev tools:

npm install @imaware/gcp-function@0.5.0


Google Cloud Functions Generator

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.


Before you begin

  1. Install Node.js version 10 or greater

  2. 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.

  3. 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

Create a function

HTTP Function Structure

Trigger: HTTP

nx generate @imaware/gcp-function:http functionName

Trigger: Pub/Sub

nx generate @imaware/gcp-function:pubsub functionName

Test the function

nx serve functionName
nx test functionName

Deploy the function

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.)

App Composition

Add Microservice (Google Cloud Functions) to NX


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 Commands

nx lint functionName
nx format:write functionName
nx format:write  functionName
nx format:check  functionName
nx affected --target=build
nx build functionName --with-deps

Google Cloud Commands

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

Hire Me

Joel Turcotte Gaucher - linkedin - joelturcotte.g@gmail.com