Deno 常用命令
Deno是Node.js的作者Ryan Dahl重新设计的新一代JavaScript运行时,更安全、更现代。
基础命令
| 命令 | 说明 | 示例 |
|---|---|---|
| deno run | 运行JavaScript/TypeScript文件 | deno run app.ts deno run -A app.ts |
| deno cache | 预下载依赖并缓存到本地 | deno cache deps.ts |
| deno install | 将脚本安装为系统命令,创建可执行链接 | deno install -n fmt deno fmt |
| deno info | 显示模块和依赖信息 | deno info https://deno.land/std@0.224.0/http/server.ts |
| deno eval | 直接执行代码字符串 | deno eval "console.log('hello')" |
| deno version | 显示Deno版本信息 | deno --version |
| deno help | 显示命令帮助信息 | deno run --help |
权限与运行选项
| 权限 | 说明 | 缩写 |
|---|---|---|
| --allow-all | 允许所有权限,等同于-A | -A |
| --allow-read | 允许读取文件系统,可指定路径 | --allow-read=/tmp |
| --allow-write | 允许写入文件系统 | --allow-write=/data |
| --allow-net | 允许网络请求,可指定域名白名单 | --allow-net=api.example.com |
| --allow-env | 允许访问环境变量 | --allow-env |
| --allow-run | 允许运行子进程 | --allow-run |
| --allow-ffi | 允许加载外部动态链接库 | --allow-ffi |
| --no-check | 跳过TypeScript类型检查,加快运行速度 | --no-check |
Deno 核心特性
| 特性 | 说明 | 对比Node.js |
|---|---|---|
| 原生TypeScript | 内置TypeScript支持,无需配置编译步骤 | 无需tsc |
| ESM模块 | 原生ES Modules支持,使用URL导入模块 | 无需CommonJS |
| 沙盒安全 | 默认拒绝所有权限,需显式授权运行 | 更安全 |
| 标准库 | 官方维护的标准库std,质量保证 | stdlib.deno.land |
| 单可执行文件 | deno编译为单个二进制文件,部署简单 | 无node_modules |
| 内置工具 | 格式化deno fmt、测试deno test、文档deno doc | 无需配置ESLint |
| 浏览器兼容 | 支持大多数Web API,Fetch、WebSocket等 | API一致 |
| 依赖管理 | 使用URL直接导入,deno.json锁定依赖 | 无package.json |
常用标准库模块
| 模块 | 说明 | 导入路径 |
|---|---|---|
| http 服务器 | 快速搭建HTTP服务,基于std/http | std/http/server.ts |
| fs 文件系统 | 文件系统操作,异步API | std/fs/mod.ts |
| path 路径 | 跨平台路径处理 | std/path/mod.ts |
| datetime 日期 | 日期时间格式化 | std/datetime/mod.ts |
| encoding 编码 | CSV、JSON、YAML等编码处理 | std/encoding/csv.ts |
| flags 参数 | 命令行参数解析 | std/flags/mod.ts |
| fmt 格式化 | 控制台日志美化输出 | std/fmt/colors.ts |
| collections 集合 | 数组、对象工具函数 | std/collections/mod.ts |
部署与打包
| 命令 | 说明 | 使用场景 |
|---|---|---|
| deno compile | 将脚本编译为独立可执行文件 | 跨平台部署 |
| deno bundle | 打包为单个JS文件 | 生产构建 |
| deno task | 运行deno.json中定义的任务 | 自定义脚本 |
| deno init | 初始化deno项目,创建配置文件 | 新项目 |
| deno vendor | 将远程依赖 vendoring到本地 | 离线构建 |
| deno upgrade | 升级Deno到最新版本 | 版本更新 |