mirror of
https://github.com/denoland/deno.git
synced 2024-11-29 16:30:56 -05:00
108 lines
3.6 KiB
Markdown
108 lines
3.6 KiB
Markdown
## Setup your environment
|
|
|
|
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:
|
|
|
|
`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.
|
|
|
|
`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
|
|
|
|
Example:
|
|
|
|
```shell
|
|
deno completions bash > /usr/local/etc/bash_completion.d/deno.bash
|
|
source /usr/local/etc/bash_completion.d/deno.bash
|
|
```
|
|
|
|
### Editors and IDEs
|
|
|
|
Because Deno requires the use of file extensions for module imports and allows
|
|
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.
|
|
|
|
The community has developed extensions for some editors to solve these issues:
|
|
|
|
#### VS Code
|
|
|
|
The beta version of [vscode_deno](https://github.com/denoland/vscode_deno) is
|
|
published on the
|
|
[Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno).
|
|
Please report any issues.
|
|
|
|
#### JetBrains IDEs
|
|
|
|
Support for JetBrains IDEs is available through
|
|
[the Deno plugin](https://plugins.jetbrains.com/plugin/14382-deno).
|
|
|
|
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.
|
|
|
|
#### Vim and NeoVim
|
|
|
|
Vim works fairly well for Deno/TypeScript if you install
|
|
[CoC](https://github.com/neoclide/coc.nvim) (intellisense engine and language
|
|
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.
|
|
|
|
#### 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"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
If you don't see your favorite IDE on this list, maybe you can develop an
|
|
extension. Our [community Discord group](https://discord.gg/TGMHGv6) can give
|
|
you some pointers on where to get started.
|