English for Deno Developers
Learn the English vocabulary for Deno development: permissions flags, npm compatibility, JSR, and the built-in tooling, explained for developers.
Deno’s pitch — secure by default, batteries-included tooling — introduces terms that don’t map cleanly onto Node.js vocabulary. Talking accurately about permission flags, JSR packages, and the built-in test runner avoids the common trap of describing Deno as “just Node with extra steps,” which undersells what’s actually different. This guide covers the vocabulary for discussing Deno in technical conversations.
Key Vocabulary
Permission flag — a command-line flag (--allow-net, --allow-read, --allow-env) that explicitly grants a running script access to a system resource, since Deno denies all such access by default.
“The script was failing silently because we forgot the --allow-env permission flag it needs to read the API key.”
JSR (JavaScript Registry) — a package registry built for TypeScript-first publishing, offering better type-checking and cross-runtime compatibility than npm for Deno-native packages. “We’re publishing the shared utils package to JSR instead of npm since it gives us stricter type checking at publish time.”
deno.json — the configuration file that replaces package.json in a pure Deno project, defining import maps, tasks, and compiler options.
“Add the new script as a task in deno.json so the whole team can run it with deno task build.”
Import map — a mapping of bare specifiers to full URLs or paths, letting Deno resolve imports like "react" without a node_modules folder.
“The import map lets us write import { z } from 'zod' even though there’s no local node_modules — it resolves straight to the JSR or npm URL.”
npm compatibility layer — the subsystem that lets Deno import npm packages directly via npm: specifiers without a separate install step.
“Thanks to the npm compatibility layer, we can just write import express from 'npm:express' without running npm install first.”
Deno Deploy — Deno’s edge runtime hosting platform, used for deploying scripts globally without managing servers. “We’re shipping the webhook handler straight to Deno Deploy instead of standing up a dedicated server for it.”
Common Phrases
- “Does this script actually need
--allow-net, or can we scope the permission down to a specific host?” - “Is this package on JSR or npm — do we need the
npm:specifier here?” - “Let’s define this as a task in
deno.jsoninstead of documenting the command in the README.” - “Did we lock the import map, or can dependency versions drift between environments?”
- “Is the built-in test runner enough here, or do we need a separate testing library?”
Example Sentences
Explaining a security choice in a design review:
“We’re running the plugin sandbox with only --allow-read scoped to a single temp directory, so even a malicious plugin can’t touch the filesystem or make network calls.”
Reporting a compatibility issue: “The npm compatibility layer is failing on this package because it relies on a native Node addon that Deno doesn’t support — we’ll need a pure-JS alternative.”
Discussing tooling choices with a teammate: “Since Deno ships a built-in formatter, linter, and test runner, we don’t need to add Prettier, ESLint, and Vitest separately — that’s three fewer dependencies to maintain.”
Professional Tips
- Say “permission flag” specifically, not just “flag,” when discussing Deno’s security model — it signals you understand the deny-by-default design.
- When debugging an import issue, clarify whether it’s a JSR package, an npm-compatible package, or a URL import — each resolves differently.
- Emphasize “secure by default” when explaining Deno’s value proposition to a team evaluating runtimes — it’s the core differentiator from Node.
- Use “task” (as in
deno task) rather than “script” when referring to entries indeno.json, matching the tool’s own terminology.
Practice Exercise
- Explain in two sentences why Deno’s permission model changes how you’d review a pull request that adds a new dependency.
- Write a one-sentence bug report about a script failing due to a missing permission flag.
- Describe, in your own words, the difference between an npm specifier and a JSR import in Deno.