Deploying Node.js serverless functions to Netlify involves a few steps.
Getting set up
Section titled “Getting set up”Depending on your current situation, you can either
- create a brand new project with the intention of solely hosting and deploying Netlify functions
- adding Netlify functions to an existing project
Let's walk through both scenarios.
Starting a New Project
Section titled “Starting a New Project”For new workspaces you can create a Nx workspace with serverless function with one command:
npx create-nx-workspace@latest my-functions --preset=@nx/netlify --site=my-siteConfigure Existing Projects
Section titled “Configure Existing Projects”You will need to install @nx/netlify if you haven't already.
nx add @nx/netlifyNext add the Netlify serverless configuration by running the following command:
nx g @nx/netlify:setup-functionsThis will do a few things:
- Create a new serverless function in
src/functions. - Add the
netlify.tomlin the root of the project - Update your
project.jsonto have 2 new targetsserve-functions&deploy-functions.
Serve Your Functions Locally
Section titled “Serve Your Functions Locally”To serve your functions locally, run:
nx serve-functionsConfigure Your Netlify Deploy Settings
Section titled “Configure Your Netlify Deploy Settings”Make sure you have a site configured on Netlify (skip if you have already). You have mostly two options:
- either go to app.netlify.com and create a new site
- use the Netlify CLI and run
npx netlify deploywhich will walk you through the process
If you run npx netlify deploy in the workspace, the site ID will be automatically saved in the .netlify/state.json file. Alternatively adjust the deploy-functions in your project.json to include the --site flag:
{ "targets": { ... "deploy-functions": { "dependsOn": ["lint"], "command": "npx netlify deploy --site=YOUR_SITE_ID", "configurations": { "production": { "command": "npx netlify deploy --site=YOUR_SITE_ID --prod" } } } }}Deployment
Section titled “Deployment”To deploy them to Netlify, run:
nx deploy-functionsThis creates a "draft deployment" to a temporary URL. If you want to do a production deployment, pass the --prod flag:
nx deploy-functions --prodThis invokes the "production" configuration of the deploy-functions target and passes the --prod flag to the Netlify CLI.