Deno是基于V8、Rust和Tokio建立的默认安全并致力于提升开发者体验的JavaScript/TypeScript/WebAssembly运行环境。
无需任何配置文件、依赖清单或者构建脚本。
- 默认安全
- TypeScript开箱即用
- 单一执行命令
- 内置多种工具
- deno官方维护的标准模块
- 打包到单一文件
curl -fsSL https://deno.land/install.sh | sh环境配置 添加如下环境变量到$HOME/.zshrc
export DENO_INSTALL="/Users/dreamerking/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"# `-` 表示从标准输入中读取
cat main.ts | deno run -
cat ../test/dateTime.ts | deno run -# 升级到最新版本
deno upgrade
# 安装指定版本
deno upgrade --version 1.0.1
# 获取帮助信息
deno help
deno -h
deno help bundle
deno bundle -h
# 初始化项目
deno init project-name
# 执行脚本
deno run main.ts
cat main.ts | deno run -
# 格式化
deno fmt
deno fmt file1.ts file2.ts
deno fmt .
# 检查
deno lint
deno lint file1.ts file2.ts
deno lint src/
# 测试
deno test注意: 选项在前,参数在后
-
锁定文件 适应子命令: cache、run、test、bundle、compile、doc --lock file 检查lock文件 --lock-write 写lock文件
-
缓存和编译标记 适用子命令: cache/run/test/bundle/doc/compile --config file 加载tsconfig.json --import-map file 导入map文件 --no-remote 不解析远程模块 --reload=<CACHE_BLOCKLIST> 重载源码缓存 --unstable 启用不稳定API
-
运行时选项 适用子命令:run/test
-
权限选项 -A, --allow-all 允许所有权限 --allow-env 允许访问和设置环境变量 --allow-hrtime 允许高精度时间 --allow-net= 允许网路访问 --allow-plugin 允许加载插件 --allow-read= --allow-run --allow-write=
-
其他 --cached-only --inspect=HOST:PORT --inspect-brk=HOST:PORT --seed 指定 Math.random() 的随机种子 --v8-flags= --no-check 禁用ts类型检查 import/export type
-
-
watch 选项 适用子命令: run、test、fmt、bundle
deno run --watch --unstale test.ts
deno run --watch --watch-exclude=file1.ts,file2.ts main.ts
deno run --watch --watch-hmr main.ts # 启用HMR类型检查
deno check main.ts
deno run --check main.ts代理设置 安装denon
set http_proxy http://host:port
deno install -qAf --unstable https://deno.land/x/denon@2.4.4/denon.ts
set PATH=%PATH%;C:\Users\Dreamer\.deno\bin脚本名称后指定参数,而命令参数在脚本之前 Deno运行时选项参数在脚本名称之前
项目配置文件 deno.json/dene.jsonc 类似Node中的package.json 和 import map文件,不是必须的
- 通过
node:前缀支持Node内置模块 - 使用 npm: 前缀可直接导入 npm 包,无需 npm install,Deno 会自动管理依赖缓存
- 支持通过 deno run npm:包名@版本 直接执行 npm 脚本(类似 npx)
- Deno 自动识别 CommonJS 包并兼容,其权限系统仍然有效。
- .cjs 文件会被视为 CommonJS 模块;若使用 .js,需在 package.json 中添加 "type": "commonjs"。
- 可通过 --unstable-detect-cjs 标志让 Deno 自动检测 CommonJS 模块(非默认行为)
- 在 ES 模块中可通过 import { createRequire } from "node:module" 手动创建 require 函数。
- 默认模式(none):Deno 使用全局缓存,不生成 node_modules,推荐新Deno项目使用。
- 自动模式(auto):生成本地 node_modules,适用于依赖 node_modules 结构的框架(如 Next.js)。
- 手动模式(manual):需手动运行 deno install 或 npm install 生成 node_modules,适用于传统 Node 项目。使用
package.json管理的Node项目。 - 配置 .npmrc 指定私有源,通过 deno.json 或 package.json 导入私有包。
- 使用
--node-modules-dir选项使用node_modules。
- 使用
/// <reference types="npm:@types/node" />
- process:Deno 提供同名全局对象,建议显式导入 import process from "node:process"。
- Buffer:从 node:buffer 导入(如 import { Buffer } from "node:buffer"),推荐使用 Uint8Array代替。
- __filename/__dirname:替换为 import.meta.filename/import.meta.dirname。
- Deno 支持 esbuild、sqlite3 等使用 Node-API 的包,但需配置 nodeModulesDir 并手动处理生命周期脚本。
配置deno.json中nodeModulesDir值为:"auto"或"manual"在项目中生成node_modules目录。
deno run -A npm:cowsay@1.5.0/cowthink "Hello there"-
deno run用于运行 JavaScript 或 TypeScript 文件。deno run <file>
选项:
--allow-read:允许读取文件系统。--allow-net:允许网络访问。--allow-write:允许写入文件系统。--allow-env:允许访问环境变量。--allow-run:允许运行子进程。--watch:监视文件变化并重新运行。
示例:
deno run --allow-read script.ts
-
deno test用于运行测试文件。deno test选项:
--filter:仅运行匹配的测试。--allow-net:允许网络访问。--coverage:生成代码覆盖率报告。
示例:
deno test --allow-net
-
deno fmt格式化代码文件。deno fmt [files...]
示例:
deno fmt main.ts
-
deno lint检查代码中的潜在问题。deno lint [files...]
示例:
deno lint main.ts
-
deno compile将脚本编译为可执行文件。deno compile [options] <file>
选项:
--output:指定输出文件名。--allow-net:允许网络访问。--allow-read:允许读取文件系统。
示例:
deno compile --output my_app main.ts
-
deno bundle将模块及其依赖打包为单个文件。deno bundle <source> <output>
示例:
deno bundle main.ts bundle.js
-
deno permissions管理和检查权限。deno permissions query:查询权限状态。deno permissions revoke:撤销权限。
示例:
deno permissions query --allow-net
-
deno bench用于运行基准测试。deno bench
选项:
--filter:仅运行匹配的基准测试。
示例:
deno bench --filter="http"
-
deno cache缓存依赖模块。deno cache <file>
示例:
deno cache deps.ts
-
deno doc查看模块的文档。deno doc [file]
示例:
deno doc main.ts
-
deno info查看模块依赖信息。deno info [file]
示例:
deno info main.ts
-
deno upgrade升级到最新版本的 Deno。deno upgrade
选项:
--version:指定版本。--output:指定输出路径。
示例:
deno upgrade --version 1.36.0
-
deno repl启动交互式 REPL 环境。deno repl
-
deno task运行在deno.json中定义的任务。deno task <task_name>
示例:
deno task start
-
deno lock管理依赖锁文件。--lock:指定锁文件。--lock-write:更新锁文件。
示例:
deno run --lock=deno.lock --lock-write main.ts
Deno CLI 提供了丰富的命令行工具,涵盖了从开发、测试到部署的全流程。通过合理使用这些命令,可以大大提高开发效率并确保代码质量。
denon.json { "nodeModulesDir": "manual" }