環境のセットアップ

Deno で生産的に開発するには環境のセットアップをしておくとよいでしょう。シェルの自動補完、環境変数、エディタや IDE の設定などです。

環境変数

Deno の挙動を制御する環境変数がいくつかあります。

DENO_DIR はデフォルトで $HOME/.cache/deno ですが、生成されるソースコードやキャッシュされるソースコードの読み取り / 書き込みされる場所を好きなパスに設定できます。

NO_COLOR を設定すると出力に色が付かなくなります。https://no-color.org/ を見てください。 ユーザーのコードをテストしたいときには、--allow-env 付きで NO_COLOR を設定しなくても boolean 値の定数 Deno.noColor を使っても同じことができます。

シェルの自動補完

シェルの自動補完用スクリプトを生成するには deno completions <shell> を実行します。このコマンドは標準出力にスクリプトを流すので、適切なファイルに出力をリダイレクトしてください。

サポートしているシェルは以下です。

  • zsh
  • bash
  • fish
  • powershell
  • elvish

例 (bash):

deno completions bash > /usr/local/etc/bash_completion.d/deno.bash
source /usr/local/etc/bash_completion.d/deno.bash

例 (フレームワークなしの zsh):

mkdir ~/.zsh # create a folder to save your completions. it can be anywhere
deno completions zsh > ~/.zsh/_deno

次に以下を .zshrc に追記してください。

fpath=(~/.zsh $fpath)
autoload -Uz compinit
compinit -u

その後、ターミナルを再起動します。補完がまだ読み込まれない場合には、以前に生成された補完を削除するために rm ~/.zcompdump/ を実行してみてください。それから再度 compinit で生成してください。

例 (zsh + oh-my-zsh) [zsh ユーザーの推奨] :

mkdir ~/.oh-my-zsh/custom/plugins/deno
deno completions zsh > ~/.oh-my-zsh/custom/plugins/deno/_deno

この後、~/.zshrc ファイルのプラグインタグに deno プラグインを加えてください。antigen のようなツールなら、パスは ~/.antigen/bundles/robbyrussell/oh-my-zsh/plugins でコマンドは antigen bundle deno のようになります。

例 (Powershell):

deno completions powershell > $profile
.$profile

これで Powershell profile がデフォルトで $HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 に作成され、 PowerShell を起動するたびに実行されます。

エディタと IDE

Deno ではモジュールのインポートにファイル拡張子を付ける必要があり、それに加えて HTTP インポートが許可されていますが、 ほとんどのエディタと言語サーバーは今のところそれを組み込みでサポートしていません。 そのため、多くのエディタではファイルを見つけられないとかファイル拡張が不要であるといったエラーが出ます。

いくつかのエディタに関してはこの問題を解決するためコミュニティが拡張機能を開発しています。

VS Code

vscode_deno のベータ版が Visual Studio Marketplace で公開されています。問題があれば報告してください。

JetBrains IDE

JetBrains IDE のサポートは the Deno plugin を通じて利用可能です。

JetBrains IDE で Deno のセットアップを行う方法に関して、詳細な情報は YouTrack の このコメント をお読みください。

Vim と 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.