2020-06-15 12:08:35 -04:00
|
|
|
## Set up your environment
|
2020-05-06 18:21:13 -04:00
|
|
|
|
|
|
|
To productively get going with Deno you should set up your environment. This
|
|
|
|
means setting up shell autocomplete, environmental variables and your editor or
|
|
|
|
IDE of choice.
|
|
|
|
|
|
|
|
### Environmental variables
|
|
|
|
|
|
|
|
There are several env vars that control how Deno behaves:
|
|
|
|
|
2020-05-26 07:12:07 -04:00
|
|
|
`DENO_DIR` defaults to `$HOME/.cache/deno` but can be set to any path to control
|
|
|
|
where generated and cached source code is written and read to.
|
2020-05-06 18:21:13 -04:00
|
|
|
|
|
|
|
`NO_COLOR` will turn off color output if set. See https://no-color.org/. User
|
|
|
|
code can test if `NO_COLOR` was set without having `--allow-env` by using the
|
|
|
|
boolean constant `Deno.noColor`.
|
|
|
|
|
|
|
|
### Shell autocomplete
|
|
|
|
|
|
|
|
You can generate completion script for your shell using the
|
|
|
|
`deno completions <shell>` command. The command outputs to stdout so you should
|
|
|
|
redirect it to an appropriate file.
|
|
|
|
|
|
|
|
The supported shells are:
|
|
|
|
|
|
|
|
- zsh
|
|
|
|
- bash
|
|
|
|
- fish
|
|
|
|
- powershell
|
|
|
|
- elvish
|
|
|
|
|
2020-06-15 12:09:17 -04:00
|
|
|
Example (bash):
|
2020-05-06 18:21:13 -04:00
|
|
|
|
|
|
|
```shell
|
|
|
|
deno completions bash > /usr/local/etc/bash_completion.d/deno.bash
|
|
|
|
source /usr/local/etc/bash_completion.d/deno.bash
|
|
|
|
```
|
|
|
|
|
2020-08-09 23:50:29 -04:00
|
|
|
Example (zsh without framework):
|
|
|
|
|
|
|
|
```shell
|
|
|
|
mkdir ~/.zsh # create a folder to save your completions. it can be anywhere
|
|
|
|
deno completions zsh > .zsh/_deno
|
|
|
|
```
|
|
|
|
|
|
|
|
then add this to your `.zshrc`
|
|
|
|
|
|
|
|
```shell
|
|
|
|
fpath=(~/.zsh $fpath)
|
|
|
|
autoload -Uz compinit
|
|
|
|
compinit -u
|
|
|
|
```
|
|
|
|
|
|
|
|
and restart your terminal. note that if completions are still not loading, you
|
|
|
|
may need to run `rm ~/.zcompdump/` to remove previously generated completions
|
|
|
|
and then `compinit` to generate them again.
|
|
|
|
|
|
|
|
Example (zsh + oh-my-zsh) [recommended for zsh users] :
|
2020-06-15 12:09:17 -04:00
|
|
|
|
|
|
|
```shell
|
|
|
|
mkdir ~/.oh-my-zsh/custom/plugins/deno
|
|
|
|
deno completions zsh > ~/.oh-my-zsh/custom/plugins/deno/_deno
|
|
|
|
```
|
|
|
|
|
2020-08-09 23:50:29 -04:00
|
|
|
After this add deno plugin under plugins tag in `~/.zshrc` file. for tools like
|
|
|
|
`antigen` path will be `~/.antigen/bundles/robbyrussell/oh-my-zsh/plugins` and
|
|
|
|
command will be `antigen bundle deno` and so on.
|
2020-06-15 12:09:17 -04:00
|
|
|
|
2020-05-06 18:21:13 -04:00
|
|
|
### Editors and IDEs
|
|
|
|
|
|
|
|
Because Deno requires the use of file extensions for module imports and allows
|
2020-05-14 14:10:25 -04:00
|
|
|
http imports, and most editors and language servers do not natively support this
|
|
|
|
at the moment, many editors will throw errors about being unable to find files
|
|
|
|
or imports having unnecessary file extensions.
|
2020-05-06 18:21:13 -04:00
|
|
|
|
|
|
|
The community has developed extensions for some editors to solve these issues:
|
|
|
|
|
2020-05-17 13:24:39 -04:00
|
|
|
#### VS Code
|
|
|
|
|
|
|
|
The beta version of [vscode_deno](https://github.com/denoland/vscode_deno) is
|
|
|
|
published on the
|
2020-05-27 01:06:08 -04:00
|
|
|
[Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno).
|
2020-05-17 13:24:39 -04:00
|
|
|
Please report any issues.
|
|
|
|
|
|
|
|
#### JetBrains IDEs
|
2020-05-06 18:21:13 -04:00
|
|
|
|
2020-05-26 13:11:08 -04:00
|
|
|
Support for JetBrains IDEs is available through
|
|
|
|
[the Deno plugin](https://plugins.jetbrains.com/plugin/14382-deno).
|
2020-05-06 18:21:13 -04:00
|
|
|
|
2020-05-26 13:11:08 -04:00
|
|
|
For more information on how to set-up your JetBrains IDE for Deno, read
|
|
|
|
[this comment](https://youtrack.jetbrains.com/issue/WEB-41607#focus=streamItem-27-4160152.0-0)
|
|
|
|
on YouTrack.
|
2020-05-06 18:21:13 -04:00
|
|
|
|
2020-05-17 13:24:39 -04:00
|
|
|
#### Vim and NeoVim
|
|
|
|
|
|
|
|
Vim works fairly well for Deno/TypeScript if you install
|
|
|
|
[CoC](https://github.com/neoclide/coc.nvim) (intellisense engine and language
|
2020-06-07 07:52:53 -04:00
|
|
|
server protocol).
|
|
|
|
|
|
|
|
After CoC is installed, from inside Vim, run`:CocInstall coc-tsserver` and
|
|
|
|
`:CocInstall coc-deno`. To get autocompletion working for Deno type definitions
|
|
|
|
run `:CocCommand deno.types`. Optionally restart the CoC server `:CocRestart`.
|
|
|
|
From now on, things like `gd` (go to definition) and `gr` (goto/find references)
|
|
|
|
should work.
|
2020-05-17 13:24:39 -04:00
|
|
|
|
2020-05-28 16:27:27 -04:00
|
|
|
#### Emacs
|
|
|
|
|
|
|
|
Emacs works pretty well for a TypeScript project targeted to Deno by using a
|
|
|
|
combination of [tide](https://github.com/ananthakumaran/tide) which is the
|
|
|
|
canonical way of using TypeScript within Emacs and
|
|
|
|
[typescript-deno-plugin](https://github.com/justjavac/typescript-deno-plugin)
|
|
|
|
which is what is used by the
|
|
|
|
[official VSCode extension for Deno](https://github.com/denoland/vscode_deno).
|
|
|
|
|
|
|
|
To use it, first make sure that `tide` is setup for your instance of Emacs.
|
|
|
|
Next, as instructed on the
|
|
|
|
[typescript-deno-plugin](https://github.com/justjavac/typescript-deno-plugin)
|
|
|
|
page, first `npm install --save-dev typescript-deno-plugin typescript` in your
|
|
|
|
project (`npm init -y` as necessary), then add the following block to your
|
|
|
|
`tsconfig.json` and you are off to the races!
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"compilerOptions": {
|
|
|
|
"plugins": [
|
|
|
|
{
|
|
|
|
"name": "typescript-deno-plugin",
|
|
|
|
"enable": true, // default is `true`
|
|
|
|
"importmap": "import_map.json"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2020-05-06 18:21:13 -04:00
|
|
|
If you don't see your favorite IDE on this list, maybe you can develop an
|
2020-07-02 09:15:36 -04:00
|
|
|
extension. Our [community Discord group](https://discord.gg/deno) can give you
|
|
|
|
some pointers on where to get started.
|