Skip to main content
info

Documentation is currently for moon v2 and latest proto. Documentation for moon v1 has been frozen and can be found here.

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.

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, 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/toolchains.*, even if an empty object. The javascript toolchain must also be enabled, and configured to use Bun as the package manager.

.moon/toolchains.yml
# Enable JavaScript
javascript:
packageManager: 'deno'

# Enable Deno
deno: {}

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

.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!