Set up 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 (bash):
`
deno completions bash > /usr/local/etc/bash_completion.d/deno.bashsource /usr/local/etc/bash_completion.d/deno.bash
`
Example (zsh without framework):
`
mkdir ~/.zsh # create a folder to save your completions. it can be anywheredeno completions zsh > ~/.zsh/_deno
`
then add this to your .zshrc
`
fpath=(~/.zsh $fpath)autoload -Uz compinitcompinit -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] :
`
mkdir ~/.oh-my-zsh/custom/plugins/denodeno completions zsh > ~/.oh-my-zsh/custom/plugins/deno/_deno
`
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.
Example (Powershell):
`
deno completions powershell > $profile.$profile
`
This will be create a Powershell profile at $HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
by default, and it will be run whenever you launch the PowerShell.
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 is published on the Visual Studio Marketplace. Please report any issues.
JetBrains IDEs
Support for JetBrains IDEs is available through the Deno plugin.
For more information on how to set-up your JetBrains IDE for Deno, read this comment on YouTrack.
Vim and NeoVim
Vim works fairly well for Deno/TypeScript if you install CoC (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 which is the canonical way of using TypeScript within Emacs and typescript-deno-plugin which is what is used by the official VSCode extension for Deno.
To use it, first make sure that tide
is setup for your instance of Emacs. Next, as instructed on the 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!
``
{ "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 can give you some pointers on where to get started.