deno repl,交互式脚本提示符
命令行用法
deno repl [OPTIONS] [-- [ARGS]...]启动一个读取-求值-打印循环(REPL),它允许您在全局上下文中交互式地构建程序状态。这对于快速原型设计和检查代码片段特别有用。
支持 TypeScript,但它不进行类型检查,只进行转译。
选项 跳转到标题
--cert 跳转到标题
从 PEM 编码文件中加载证书颁发机构。
--conditions 跳转到标题
使用此参数为 npm 包导出指定自定义条件。您也可以使用 DENO_CONDITIONS 环境变量。
--config 跳转到标题
短标记:-c
配置 Deno 的各个方面,包括 TypeScript、代码检查和代码格式化。通常,配置文件名为 deno.json 或 deno.jsonc,并且会自动检测;在这种情况下,无需使用此标志。
--env-file 跳转到标题
从本地文件加载环境变量。只使用具有给定键的第一个环境变量。现有进程环境变量不会被覆盖,因此如果环境中已存在同名变量,其值将保持不变。如果您的 .env 文件中存在同一环境变量的多个声明,则应用第一个遇到的声明。这取决于您作为参数传入的文件顺序。
--eval 跳转到标题
在 REPL 启动时评估提供的代码。
--eval-file 跳转到标题
在 REPL 启动时将提供的文件作为脚本进行评估。接受文件路径和 URL。
--location 跳转到标题
某些 Web API 使用的 `globalThis.location` 值。
--no-config 跳转到标题
禁用自动加载配置文件。
--preload 跳转到标题
在主模块之前执行的文件列表。
--seed 跳转到标题
设置随机数生成器种子。
--v8-flags 跳转到标题
要查看所有可用标志的列表,请使用 --v8-flags=--help。标志也可以通过 DENO_V8_FLAGS 环境变量设置。使用此标志设置的任何标志都将附加到 DENO_V8_FLAGS 环境变量之后。
依赖管理选项 跳转到标题
--cached-only 跳转到标题
要求远程依赖项已缓存。
--frozen 跳转到标题
如果锁定文件过期,则报错。
--import-map 跳转到标题
从本地文件或远程 URL 加载导入映射文件。
--lock 跳转到标题
检查指定的锁定文件。(如果未提供值,则默认为 "./deno.lock")。
--no-lock 跳转到标题
禁用锁定文件的自动发现。
--no-npm 跳转到标题
不解析 npm 模块。
--no-remote 跳转到标题
不解析远程模块。
--node-modules-dir 跳转到标题
设置 npm 包的 node 模块管理模式。
--reload 跳转到标题
短标记:-r
重新加载源代码缓存(重新编译 TypeScript) 无值 重新加载所有内容 jsr:@std/http/file-server,jsr:@std/assert/assert-equals 重新加载特定模块 npm: 重新加载所有 npm 模块 npm:chalk 重新加载特定 npm 模块。
--vendor 跳转到标题
切换远程模块的本地 `vendor` 文件夹使用以及 npm 包的 `node_modules` 文件夹使用。
调试选项 跳转到标题
--inspect 跳转到标题
在 `host:port` 上激活检查器 [默认: `127.0.0.1:9229`]
--inspect-brk 跳转到标题
在 host:port 上激活检查器,等待调试器连接并在用户脚本开始时中断。
--inspect-wait 跳转到标题
在 host:port 上激活检查器,并在运行用户代码之前等待调试器连接。
特殊变量 跳转到标题
REPL 提供了一些始终可用的特殊变量
| 标识符 | 描述 |
|---|---|
| _ | 返回最后评估的表达式 |
| _error | 返回最后抛出的错误 |
Deno 1.14.3
exit using ctrl+d or close()
> "hello world!"
"hello world!"
> _
"hello world!"
> const foo = "bar";
undefined
> _
undefined
特殊函数 跳转到标题
REPL 在全局作用域中提供了几个函数
| 函数 | 描述 |
|---|---|
| clear() | 清除整个终端屏幕 |
| close() | 关闭当前 REPL 会话 |
--eval 标志 跳转到标题
--eval 标志允许您在进入 REPL 之前在运行时执行一些代码。这对于导入您在 REPL 中常用的一些代码,或以某种方式修改运行时很有用。
$ deno repl --allow-net --eval 'import { assert } from "jsr:@std/assert@1"'
Deno 1.45.3
exit using ctrl+d, ctrl+c, or close()
> assert(true)
undefined
> assert(false)
Uncaught AssertionError
at assert (https://jsr.deno.org.cn/@std/assert/1.0.0/assert.ts:21:11)
at :1:22
--eval-file 标志 跳转到标题
--eval-file 标志允许您在进入 REPL 之前从指定文件运行代码。类似于 --eval 标志,这对于导入您在 REPL 中常用的一些代码,或以某种方式修改运行时很有用。
文件可以指定为路径或 URL。URL 文件会被缓存,并可以通过 --reload 标志重新加载。
如果也指定了 --eval,则 --eval-file 文件会在 --eval 代码之前运行。
$ deno repl --eval-file=https://docs.deno.org.cn/examples/welcome.ts,https://docs.deno.org.cn/examples/local.ts
Download https://docs.deno.org.cn/examples/welcome.ts
Welcome to Deno!
Download https://docs.deno.org.cn/examples/local.ts
Deno 1.45.3
exit using ctrl+d or close()
> local // this variable is defined locally in local.ts, but not exported
"This is a local variable inside of local.ts"
相对导入路径解析 跳转到标题
如果 --eval-file 指定了一个包含相对导入的代码文件,则运行时将尝试相对于当前工作目录解析导入。它不会尝试相对于代码文件位置解析它们。这可能导致在使用 --eval-file 处理模块文件时出现“模块未找到”错误。
$ deno repl --eval-file=https://jsr.deno.org.cn/@std/encoding/1.0.0/ascii85.ts
error in --eval-file file https://jsr.deno.org.cn/@std/encoding/1.0.0/ascii85.ts. Uncaught TypeError: Module not found "file:///home/_validate_binary_like.ts".
at async :2:13
Deno 1.45.3
exit using ctrl+d or close()
>
Tab 补全 跳转到标题
Tab 补全是在 REPL 中快速导航的关键功能。在按下 Tab 键后,Deno 将显示所有可能的补全列表。
$ deno repl
Deno 1.45.3
exit using ctrl+d or close()
> Deno.read
readTextFile readFile readDirSync readLinkSync readAll read
readTextFileSync readFileSync readDir readLink readAllSync readSync
键盘快捷键 跳转到标题
| 按键 | 动作 |
|---|---|
| Ctrl-A, Home | 将光标移动到行首 |
| Ctrl-B, Left | 将光标向左移动一个字符 |
| Ctrl-C | 中断并取消当前编辑 |
| Ctrl-D | 如果行为空,则发出行尾信号 |
| Ctrl-D, Del | 如果行不为空,则删除光标下的字符 |
| Ctrl-E, End | 将光标移动到行尾 |
| Ctrl-F, Right | 将光标向右移动一个字符 |
| Ctrl-H, Backspace | 删除光标前的字符 |
| Ctrl-I, Tab | 下一个补全 |
| Ctrl-J, Ctrl-M, Enter | 完成行输入 |
| Ctrl-K | 删除从光标到行尾的内容 |
| Ctrl-L | 清屏 |
| Ctrl-N, Down | 历史记录中的下一个匹配项 |
| Ctrl-P, Up | 历史记录中的上一个匹配项 |
| Ctrl-R | 反向搜索历史记录 (Ctrl-S 正向搜索, Ctrl-G 取消) |
| Ctrl-T | 将前一个字符与当前字符调换 |
| Ctrl-U | 删除从行首到光标的内容 |
| Ctrl-V | 插入任何特殊字符而不执行其相关操作 |
| Ctrl-W | 删除光标前的单词(以空格作为单词边界) |
| Ctrl-X Ctrl-U | 撤销 |
| Ctrl-Y | 从 Yank 缓冲区粘贴 |
| Ctrl-Y | 从 Yank 缓冲区粘贴(Meta-Y 粘贴下一个 yank) |
| Ctrl-Z | 挂起(仅限 Unix) |
| Ctrl-_ | 撤销 |
| Meta-0, 1, ..., - | 将数字指定给参数。– 表示负参数。 |
| Meta < | 移动到历史记录中的第一个条目 |
| Meta > | 移动到历史记录中的最后一个条目 |
| Meta-B, Alt-Left | 将光标移动到前一个单词 |
| Meta-Backspace | 删除从当前单词开头开始的内容,或者如果光标在单词之间,则删除到前一个单词开头的内容 |
| Meta-C | 将当前单词首字母大写 |
| Meta-D | 向前删除一个单词 |
| Meta-F, Alt-Right | 将光标移动到下一个单词 |
| Meta-L | 将下一个单词小写 |
| Meta-T | 调换单词 |
| Meta-U | 将下一个单词大写 |
| Meta-Y | 参见 Ctrl-Y |
| Ctrl-S | 插入新行 |
DENO_REPL_HISTORY 跳转到标题
默认情况下,Deno 将 REPL 历史记录存储在 DENO_DIR 目录下的 deno_history.txt 文件中。您可以通过运行 deno info 命令查找您的 DENO_DIR 目录和其他资源的位置。
您可以使用 DENO_REPL_HISTORY 环境变量来控制 Deno 存储 REPL 历史文件位置。如果将其设置为空值,Deno 将不会存储历史文件。