---
title: Deno handbook
toc_max_heading_level: 6
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

Utilizing Deno in a TypeScript based monorepo can be a non-trivial task. With this handbook, we'll
help guide you through this process.

:::info

This guide is a living document and will continue to be updated over time!

:::

## moon setup

For this part of the handbook, we'll be focusing on [moon](/moon), our task runner. To start,
languages in moon act like plugins, where their functionality and support _is not_ enabled unless
explicitly configured. We follow this approach to avoid unnecessary overhead.

### Enabling the language

To enable TypeScript support via Deno, define the [`deno`](../../config/toolchain#deno) setting in
[`.moon/toolchains.*`](../../config/toolchain), even if an empty object. The
[`javascript`](../../config/toolchain#javascript) toolchain must also be enabled, and configured to
use Bun as the package manager.

```yaml title=".moon/toolchains.yml"
# Enable JavaScript
javascript:
  packageManager: 'deno'

# Enable Deno
deno: {}
```

Or by pinning a `deno` version in [`.prototools`](../../proto/config) in the workspace root.

```toml title=".prototools"
deno = "2.0.0"
```

This will enable the Deno toolchain and provide the following automations around its ecosystem:

- Automatic handling and caching of lockfiles (when the setting is enabled).
- Relationships between projects will automatically be discovered based on `imports`, `importMap`,
  and `deps.ts` (currently experimental).
- And more to come!

## Coming soon!

The handbook is currently being written while we finalize our Deno integration support!
