命令行界面

Deno 是一个命令行程序。到目前为止,看过这些示例后,您应该熟悉了一些简单的命令,并且已经了解了 shell 的基本用法。

这是查看主要帮助文档的几种方法:

  1. # 使用子命令
  2. deno help
  3. # 使用短选项 —— 输出和上面一样
  4. deno -h
  5. # 使用长选项 —— 输出更加详细
  6. deno --help

Deno 的 CLI 是基于子命令的。上面的帮助命令应该显示了一个子命令列表,例如 deno bundle

要查看特定于子命令的帮助,您可以参考以下示例:

  1. deno help bundle
  2. deno bundle -h
  3. deno bundle --help

各个子命令的详细指南在 这里

脚本来源

Deno 可以从多个来源获取脚本,一个文件名,一个 URL,或者是 “-“,表示从标准输入读取,在与其他应用集成时很有用。

  1. deno run main.ts
  2. deno run https://mydomain.com/main.ts
  3. cat main.ts | deno run -

脚本参数

通过在脚本名称后指定参数,您可以将用户空间参数传递给要运行的脚本,这些参数与 Deno 运行时选项区分开。

  1. deno run main.ts a b -c --quiet
  1. // main.ts
  2. console.log(Deno.args); // [ "a", "b", "-c", "--quiet" ]

请注意,在脚本名称之后传递的所有内容都将作为脚本参数传递,而不会用作 Deno 运行时选项。

这将导致以下陷阱:

  1. # 正常情况:我们给 net_client.ts 授予网络权限。
  2. deno run --allow-net net_client.ts
  3. # 错误情况:--allow-net 传递为 Deno.args,引发网络权限错误。
  4. deno run net_client.ts --allow-net

有人认为这打破了常规:

一个非位置选项的解析方式会根据位置变化。

然而:

  1. 这是区分运行时选项和脚本参数的最合乎逻辑的方法。
  2. 这是区分运行时选项和脚本参数的最符合人体工程学的方法。
  3. 实际上,这和其他流行的运行时具有相同的行为。
    • 试试 node -c index.jsnode index.js -c,第一个只会根据 -c 选项对 index.js 做语法检查,而第二个会 执行 index.js,将 -c 传递为 require("process").argv

下面是在相关的子命令之间共享的逻辑选项组。

完整性选项

影响可以将资源下载到缓存的命令:deno cachedeno rundeno test.

  1. --lock <FILE> 检查指定的锁文件
  2. --lock-write 写入锁文件,和 --lock 一起使用

更多信息在 这里

缓存和编译选项

影响可以增加缓存的命令:deno cachedeno rundeno test.

以及影响模块解析、编译配置等的选项。

  1. --config <FILE> 加载 tsconfig.json 配置文件
  2. --importmap <FILE> 不稳定的: 加载导入映射文件
  3. --no-remote 不要解析远程模块
  4. --reload=<CACHE_BLOCKLIST> 重新加载源代码缓存(重新编译 TypeScript
  5. --unstable 启用不稳定 API

运行时选项

影响可以运行用户代码的命令:deno rundeno test.

权限选项

这里 列出了所有权限选项。

其他运行时选项

影响运行时环境的更多选项:

  1. --cached-only 要求远程依赖已经被缓存
  2. --inspect=<HOST:PORT> host:port 启动检查器
  3. --inspect-brk=<HOST:PORT> host:port 启动检查器并且暂停执行
  4. --seed <NUMBER> 指定 Math.random() 的随机种子
  5. --v8-flags=<v8-flags> 设置 V8 命令行选项