Serverless Deployment with Deno Deploy
In this guide, we'll show you how to deploy serverless functions using Deno Deploy.
Prerequisite: A Deno Project
Have Deno already installed?Make sure you have Deno installed on your machine. Consult the Deno docs for more details
If you don't have a Nx Deno project yet, you can easily create a new one with the following command:
❯
npx create-nx-workspace@latest denoapp --preset=@nx/deno
This creates a single Deno application.
You can also add a new Deno application to an existing Nx monorepo workspace. Make sure you have the @nx/deno package installed:
❯
nx add @nx/deno
The command below uses the as-provided directory flag behavior, which is the default in Nx 16.8.0. If you're on an earlier version of Nx or using the derived option, omit the --directory flag. See the as-provided vs. derived documentation for more details.
Then generate a new Deno app with the following command:
❯
nx g @nx/deno:app denoapp --directory=apps/denoapp
Configuring Deno Deploy
First configure your Deno Deploy project:
- Push your repository to GitHub.
- Go to Deno dashboard and set up your Deno project. You need to authorize GitHub to allow access to your repositories, then you need to specify the main file (e.g. src/main.ts), and the production branch (e.g.main).
- Generate an access token from your account settings page. Copy the new token somewhere.
- Add an entry to the project's .envfile:DENO_DEPLOY_TOKEN=<token-from-previous-step>(create this file if needed, and add it to.gitignoreso you don't commit it)
- Install the deployctlCLI tool.
deployctl is a CLI that allows us to deploy our Deno project. We can embed that into our Nx project by creating a run-command. The @nx/deno plugin already comes with a setup-deploy generator that helps with that. Just run:
❯
nx g @nx/deno:setup-deploy --platform=deno-deploy
This adds a new target to your project.json
1{
2  "name": "denoapp",
3  ...
4  "targets": {
5    ...
6    "deploy": {
7      "executor": "nx:run-commands",
8      "options": {
9        "command": "deployctl deploy --project=<Your-Deno-Deploy-Project-Name> --import-map=import_map.json --exclude=node_modules  src/main.ts --dry-run"
10      },
11      "configurations": {
12        "preview": {
13          "command": "deployctl deploy --project=<Your-Deno-Deploy-Project-Name> --import-map=import_map.json --exclude=node_modules src/main.ts"
14        },
15        "production": {
16          "command": "deployctl deploy --project=<Your-Deno-Deploy-Project-Name> --import-map=import_map.json --exclude=node_modules --prod src/main.ts"
17        }
18      }
19    }
20  }
21}
22
23Deploy
Once you are done the above steps, you can deploy and view your Deno app using the following command:
❯
nx deploy
You can find the production URL from the Deno dashboard (e.g. https://acme-denoapp.deno.dev/). Browsing to the production URL should return the default JSON message: { "message": "Hello denoapp" }.