Add a New Deno Project
Supported Features
Because we are using an Nx plugin for Deno, all the features of Nx are available.
✅ Run Tasks ✅ Cache Task Results ✅ Share Your Cache ✅ Explore the Graph ✅ Distribute Task Execution ✅ Integrate with Editors ✅ Automate Updating Nx ✅ Enforce Module Boundaries ✅ Use Task Executors ✅ Use Code Generators ✅ Automate Updating Framework Dependencies
Install the Deno Plugin
Have Deno already installed?Make sure you have Deno installed on your machine. Consult the Deno docs for more details
❯
npm i --save-dev @nx/deno
Create an Application
Directory Flag Behavior ChangesThe 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 workspace layout documentation for more details.
Use the app generator to create a new Deno app.
❯
nx g @nx/deno:app deno-app --directory=apps/deno-app
Serve the API by running
❯
nx serve deno-app
This starts the application on localhost:4200 by default.
Create a Library
Directory Flag Behavior ChangesThe 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 workspace layout documentation for more details.
To create a new library, run:
❯
nx g @nx/deno:lib my-lib --directory=libs/my-lib
Deno library paths are maintained in the root import_map.json file. Because typescript doesn't understand how to parse this file, you may get errors in your code editor that are not problems during build or serve.
Once the library is created, update the following files.
1export function someFunction(): string {
2 return 'some function';
3}
41import { someFunction } from '@my-org/my-lib';
2
3// deno-lint-ignore require-await
4export async function handler(_request: Request): Promise<Response> {
5 const message = JSON.stringify({
6 message: 'Hello deno-app ' + someFunction(),
7 });
8 return new Response(message, {
9 status: 200,
10 headers: {
11 'content-type': 'application/json',
12 },
13 });
14}
15Now when you serve your app, you'll see the content from the library being displayed.
