Skip to main content

Deno handbook

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


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, 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 setting in .moon/toolchain.yml, even if an empty object.

# Enable Deno
deno: {}

# Enable Deno and override default settings
lockfile: true

Or by pinning a deno version in .prototools in the workspace root.

deno = "1.31.0"

This will enable the Deno platform 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!

Work in progress


Deno support is currently experimental while we finalize the implementation.

The following features are not supported:

  • deno.jsonc files (use deno.json instead).
  • npm: imports do not consider Node.js dependencies as hash sources.
  • files.exclude are currently considered an input. These will be filtered in a future release.

Coming soon!

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