2020-06-08 09:49:32 -04:00
|
|
|
## Command line interface
|
|
|
|
|
|
|
|
Deno is a command line program. You should be familiar with some simple commands
|
|
|
|
having followed the examples thus far and already understand the basics of shell
|
|
|
|
usage.
|
|
|
|
|
|
|
|
There are multiple ways of viewing the main help text:
|
|
|
|
|
|
|
|
```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's CLI is subcommand-based. The above commands should show you a list of
|
|
|
|
those supported, such as `deno bundle`. To see subcommand-specific help for
|
|
|
|
`bundle`, you can similarly run one of:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
deno help bundle
|
|
|
|
deno bundle -h
|
|
|
|
deno bundle --help
|
|
|
|
```
|
|
|
|
|
|
|
|
Detailed guides to each subcommand can be found [here](../tools.md).
|
|
|
|
|
2020-06-12 10:59:51 -04:00
|
|
|
### Script source
|
|
|
|
|
|
|
|
Deno can grab the scripts from multiple sources, a filename, a url, and '-' to
|
2020-07-19 12:10:55 -04:00
|
|
|
read the file from stdin. The last is useful for integration with other
|
2020-06-12 10:59:51 -04:00
|
|
|
applications.
|
|
|
|
|
|
|
|
```shell
|
|
|
|
deno run main.ts
|
|
|
|
deno run https://mydomain.com/main.ts
|
|
|
|
cat main.ts | deno run -
|
|
|
|
```
|
|
|
|
|
2020-06-08 09:49:32 -04:00
|
|
|
### Script arguments
|
|
|
|
|
|
|
|
Separately from the Deno runtime flags, you can pass user-space arguments to the
|
|
|
|
script you are running by specifying them after the script name:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
deno run main.ts a b -c --quiet
|
|
|
|
```
|
|
|
|
|
|
|
|
```ts
|
|
|
|
// main.ts
|
|
|
|
console.log(Deno.args); // [ "a", "b", "-c", "--quiet" ]
|
|
|
|
```
|
|
|
|
|
|
|
|
**Note that anything passed after the script name will be passed as a script
|
|
|
|
argument and not consumed as a Deno runtime flag.** This leads to the following
|
|
|
|
pitfall:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
# 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
|
|
|
|
```
|
|
|
|
|
|
|
|
Some see it as unconventional that:
|
|
|
|
|
|
|
|
> a non-positional flag is parsed differently depending on its position.
|
|
|
|
|
|
|
|
However:
|
|
|
|
|
|
|
|
1. This is the most logical way of distinguishing between runtime flags and
|
|
|
|
script arguments.
|
|
|
|
2. This is the most ergonomic way of distinguishing between runtime flags and
|
|
|
|
script arguments.
|
|
|
|
3. This is, in fact, the same behaviour as that of any other popular runtime.
|
|
|
|
- Try `node -c index.js` and `node index.js -c`. The first will only do a
|
|
|
|
syntax check on `index.js` as per Node's `-c` flag. The second will
|
|
|
|
_execute_ `index.js` with `-c` passed to `require("process").argv`.
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
There exist logical groups of flags that are shared between related subcommands.
|
|
|
|
We discuss these below.
|
|
|
|
|
2020-09-13 09:17:25 -04:00
|
|
|
### Watch mode
|
|
|
|
|
|
|
|
You can supply the `--watch` flag to `deno run` to enable the built in file
|
|
|
|
watcher. When Deno starts up with this flag it watches the entrypoint, and all
|
|
|
|
local files the entrypoint statically imports. Whenever one of these files is
|
|
|
|
changed on disk, the program will automatically be restarted.
|
|
|
|
|
2020-12-28 16:37:06 -05:00
|
|
|
```
|
2021-04-27 06:44:36 -04:00
|
|
|
deno run --watch main.ts
|
2020-12-28 16:37:06 -05:00
|
|
|
```
|
|
|
|
|
2020-06-08 09:49:32 -04:00
|
|
|
### Integrity flags
|
|
|
|
|
|
|
|
Affect commands which can download resources to the cache: `deno cache`,
|
|
|
|
`deno run` and `deno test`.
|
|
|
|
|
|
|
|
```
|
|
|
|
--lock <FILE> Check the specified lock file
|
|
|
|
--lock-write Write lock file. Use with --lock.
|
|
|
|
```
|
|
|
|
|
|
|
|
Find out more about these
|
|
|
|
[here](../linking_to_external_code/integrity_checking.md).
|
|
|
|
|
|
|
|
### Cache and compilation flags
|
|
|
|
|
|
|
|
Affect commands which can populate the cache: `deno cache`, `deno run` and
|
|
|
|
`deno test`. As well as the flags above this includes those which affect module
|
|
|
|
resolution, compilation configuration etc.
|
|
|
|
|
|
|
|
```
|
|
|
|
--config <FILE> Load tsconfig.json configuration file
|
2020-10-20 08:30:59 -04:00
|
|
|
--import-map <FILE> UNSTABLE: Load import map file
|
2020-06-08 09:49:32 -04:00
|
|
|
--no-remote Do not resolve remote modules
|
2020-06-13 13:09:39 -04:00
|
|
|
--reload=<CACHE_BLOCKLIST> Reload source code cache (recompile TypeScript)
|
2020-06-08 09:49:32 -04:00
|
|
|
--unstable Enable unstable APIs
|
|
|
|
```
|
|
|
|
|
|
|
|
### Runtime flags
|
|
|
|
|
|
|
|
Affect commands which execute user code: `deno run` and `deno test`. These
|
|
|
|
include all of the above as well as the following.
|
|
|
|
|
|
|
|
#### Permission flags
|
|
|
|
|
|
|
|
These are listed [here](./permissions.md#permissions-list).
|
|
|
|
|
|
|
|
#### Other runtime flags
|
|
|
|
|
|
|
|
More flags which affect the execution environment.
|
|
|
|
|
|
|
|
```
|
|
|
|
--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: ...
|
|
|
|
```
|