Run TypeScript directly and build servers with web standard APIs
You can use web standard objects like Request and Response outside the browser and run TypeScript code without a separate build process. Deno is a runtime built on the V8 engine, Rust, and Tokio that handles JavaScript and WebAssembly. It is designed with safe defaults, meaning it only works when you explicitly allow network or file system access.
Explicit permission model
Deno requires you to explicitly specify the permissions a program needs at runtime. For example, you must add the --allow-net option to access the network; if you omit it, the server will not start. This design prevents unintended external communication or file read/write operations. Additionally, it supports objects like Request and Response used in browsers, allowing you to write web server code using only standard APIs without separate libraries.
Starting your first server
You can run a web server by creating a single TypeScript file. In a server.ts file, you write code that uses the Deno.serve function to handle requests and return responses. Running this file with the deno run --allow-net server.ts command starts the server on local port 8000. A key feature is that it runs immediately without a separate build step or package manager configuration.
Installation and supported platforms
You can install it via Shell commands on Mac and Linux, or PowerShell commands on Windows. It is also available through package managers like Homebrew, Chocolatey, WinGet, and Scoop. The documentation details how to build it directly from source. After installation, you can run or manage programs using the deno command.
Ecosystem and resources
Official documentation and a standard library are provided, making common utility functions easy to use. It also operates JSR, an open-source package registry where you can share and fetch the latest JavaScript and TypeScript packages. The developer blog regularly publishes product updates and tutorials.
Considerations for migrating existing projects
Deno uses a different permission model and module system than Node.js, so it is difficult to run existing Node.js project code as-is. You must write code based on web standard APIs or be able to use Deno-specific APIs. It may not be suitable for projects that require specific native modules or Node.js-only packages. It is a tool worth considering for new projects or when building servers that follow web standards.