2.4 Deno命令行界面
2021-04-29 本文已影响0人
9e8aeff1c70c
命令行界面
Deno是一个命令行程序。到目前为止,您应该已经熟悉了一些简单的命令,并且已经了解了Shell使用的基本知识。
查看帮助的方法有多种:
# Using the subcommand.
deno help
# Using the short flag -- outputs the same as above.
deno -h
# Using the long flag -- outputs more detailed help text where available.
deno --help
Deno的CLI是基于子命令的。上面的命令应该向您显示受支持的列表,例如deno bundle
。要查看针对的子命令特定的帮助 bundle
,您可以类似地运行以下之一:
deno help bundle
deno bundle -h
deno bundle --help
有关每个子命令的详细指南,请参见此处。
脚本源
Deno可以从多个来源,文件名,URL和“-”中获取脚本,以从stdin中读取文件。最后一个对于与其他应用程序集成很有用。
deno run main.ts
deno run https://mydomain.com/main.ts
cat main.ts | deno run -
脚本参数
与Deno运行时标志分开,可以通过在脚本名称后指定用户空间参数来将它们传递给正在运行的脚本:
deno run main.ts a b -c --quiet
// main.ts
console.log(Deno.args);
// [ "a", "b", "-c", "--quiet" ]
请注意,在脚本名称之后传递的所有内容都将作为脚本参数传递,并且不用作Deno运行时标志。这导致了以下陷阱:
# Good. We grant net permission to net_client.ts.
deno run --allow-net net_client.ts
# Bad! --allow-net was passed to Deno.args, throws a net permission error.
deno run net_client.ts --allow-net
有人认为这是非常规的:
非位置标志的解析取决于其位置。
然而:
- 这是区分运行时标志和脚本参数的最合乎逻辑的方法。
- 这是区分运行时标志和脚本参数的最符合人体工程学的方法。
- 实际上,这是与任何其他流行的运行时相同的行为。
- 尝试
node -c index.js
和node index.js -c
。第一个将仅index.js
根据Node的-c
标志进行语法检查。第二个将 执行index.js
与-c
传递require("process").argv
。
- 尝试
存在相关子命令之间共享的逻辑标志组。我们在下面讨论这些。
观看模式
您可以提供--watch
标志以deno run
启用内置文件监视程序。当Deno使用此标志启动时,它将监视入口点,并且入口点将静态导入所有本地文件。只要更改磁盘上的这些文件之一,该程序就会自动重新启动。
注意:文件监视程序是一项新功能,仍然不稳定,因此需要 --unstable
标记
deno run --watch --unstable main.ts
完整性标志
影响可以下载资源到缓存命令deno cache
, deno run
和deno test
。
--lock <FILE> Check the specified lock file
--lock-write Write lock file. Use with --lock.
缓存和编译标志
影响可以填充缓存命令deno cache
,deno run
和 deno test
。以及上面的标志包括那些影响模块分辨率,编译配置等的标志。
--config <FILE> Load tsconfig.json configuration file
--import-map <FILE> UNSTABLE: Load import map file
--no-remote Do not resolve remote modules
--reload=<CACHE_BLOCKLIST> Reload source code cache (recompile TypeScript)
--unstable Enable unstable APIs
运行时标志
影响执行用户代码的命令:deno run
和deno test
。这些包括以上所有内容以及以下内容。
权限标志
这些在这里列出。
其他运行时标志
更多影响执行环境的标志。
--cached-only Require that remote dependencies are already cached
--inspect=<HOST:PORT> activate inspector on host:port ...
--inspect-brk=<HOST:PORT> activate inspector on host:port and break at ...
--seed <NUMBER> Seed Math.random()
--v8-flags=<v8-flags> Set V8 command line options. For help: ...