Config files
Ende is configured with an ende.json file. It is optional: scripts run without
one, and you add it when you want to declare dependencies or configure Ende's
tooling, such as the formatter, linter, TypeScript compiler, or tasks.
ende.json
ende.json is where you configure Ende itself: tasks, dependencies, and tools
like the TypeScript compiler, linter, and formatter. It is optional; a minimal
file looks like this:
{
"tasks": {
"dev": "ende run --watch main.ts"
},
"imports": {
"@ende/assert": "jsr:@ende/assert@^2026.10.15"
},
"fmt": {
"lineWidth": 100
}
}It supports .json and
.jsonc
extensions, so with ende.jsonc you can add comments and trailing commas.
Ende automatically detects a ende.json or ende.jsonc file in your current
working directory or any parent directory, which is what makes a project's
settings apply to every file under it. Use the --config flag to point at a
different file. In a monorepo, a root ende.json can define a
workspace whose members each carry their
own ende.json.
Ende still reads deno.json, deno.jsonc and deno.lock, and DENO_*
environment variables, as fallbacks for projects coming from Deno. They print a
deprecation warning, and the ende.* names take precedence when both exist.
What you can configure
A ende.json file configures Ende's tooling and your project. Every field is
documented in the
Configuration file (ende.json) reference,
including:
- Dependencies and import maps
- Tasks
- Linting and formatting
- Lockfile
- TypeScript compiler options
- Unstable feature flags
includeandexclude- Exports
- Permissions
- Compile options
- Minimum dependency age
See the reference for a full example ende.json file and the JSON schema for editor autocompletion.