Chapter 06

[Deno/基本機能]セットアップ

k4nd4
k4nd4
2024.12.19に更新

Deno の開発を始めるための基本的な手順は以下の通りです。

  • Deno のインストール
  • 環境構築
  • プロジェクトの作成

インストール

環境によってインストール方法は異なるため、適切な手段を選んでください。

MacOS や Linux では、次のコマンドでインストールできます。

curl -fsSL https://deno.land/install.sh | sh

Windows では、次のコマンドでインストールできます。

irm https://deno.land/install.ps1 | iex

他の方法や詳しいインストール方法は公式のドキュメントを参照してください。

以下のコマンドを実行してバージョンが表示されればインストールは成功しています。

deno --version

環境構築

エディター

Visual Studio Code(VSCode)、JetBrain IDE には Deno での開発をサポートする拡張機能が存在するため、エディターとしては Visual Studio Code または JetBrain IDE をお勧めします。

VSCode では拡張機能検索タブからDenoと検索し、Denoland から提供されている拡張機能をインストールします。その後、Ctrl+Shift+Pで表示されるコマンドパレットでDeno: Initialize Workspace Configurationを入力し実行することでワークスペースに Deno が設定され、 VSCode で Deno 開発を行うための設定が完了します。

JetBrain IDE では File > Settings の Plugins 画面からDenoと検索し公式から提供されているプラグインをインストールしてください。Deno で開発を行うプロジェクトにてフレームワークとして Deno が認識されていれば設定は完了です。

ネットワーク関連設定

プロキシや証明書を使用したい場合、Deno ランタイムでは特別な環境変数を設定する必要があります。

プロキシの環境設定

HTTP_PROXY=http://<ユーザ名>:<パスワード>@<proxyサーバのアドレス>:<ポート>
HTTPS_PROXY=http://<ユーザ名>:<パスワード>@<proxyサーバのアドレス>:<ポート>

証明書の環境設定(特定の証明書を参照する場合)

DENO_CERT=<証明書までのパス>

証明書の環境設定(システム証明書ストアを参照する場合)

DENO_TLS_CA_STORE=system

Deno コマンド実行時に証明書を指定して実行することも可能です。

deno --cert <証明書までのパス> main.ts

プロジェクトの作成

Deno では以下のコマンドで新しいプロジェクトを作成できます。

deno init my_project

以下のような構造を持つプロジェクトのディレクトリが作成されます。

my_project
├── deno.json // プロジェクト設定ファイル
├── main_test.ts // アプリケーションファイル
└── main.ts // アプリケーションテストファイル

作成されたmain.tsには2つの数字を足し合わせるシンプルなプログラムが記述されています。以下のコマンドで実行できます。

deno run main.ts

設定ファイル

Deno には標準的な設定ファイルが存在しません。Deno は設定なしで動作し、必要な設定は基本的にコマンドラインオプションで行います。ただし、オプションとしていくつかの設定を deno.json に記述することができます。

deno.json には以下の内容を指定できます。

  • tsconfig.jsonの設定
  • import-mapsの設定
  • Deno のサブコマンド関連の設定
  • deno taskコマンドの設定
  • ロックファイルの設定
tsconfig.jsonの設定

tsconfig.jsonで記述する設定を同様の書き方で Deno に反映させることができます。

{
  "compilerOptions": {
    "allowJs": true,
    "lib": ["deno.window"],
    "strict": true
  }
}
import-mapsの設定

import-mapsを設定することで Deno で使用したいモジュールを一元管理することができます。Deno での一元管理については モジュールの一元管理 を参照してください。

{
  "imports": {
    "@luca/cases": "jsr:@luca/cases@^1.0.0",
    "cowsay": "npm:cowsay@^1.6.0",
    "cases": "https://deno.land/x/case/mod.ts"
  }
}
Deno のサブコマンド関連の設定

Deno のサブコマンドであるdeno lintdeno fmtの設定を記述することができます。
実際の設定項目やサブコマンドの使い方は # リンター・フォーマット で詳しく記述しています。

{
  "lint": {
    // lint対象ファイル
    "include": ["src/"],
    // lint対象除外ファイル
    "exclude": ["src/testdata/", "src/fixtures/**/*.ts"],
    // lintのルール設定
    "rules": {
      "tags": ["recommended"],
      "include": ["ban-untagged-todo"],
      "exclude": ["no-unused-vars"]
    }
  },
  "fmt": {
    // フォーマット設定
    "useTabs": true,
    "lineWidth": 80,
    "indentWidth": 4,
    "semiColons": false,
    "singleQuote": true,
    "proseWrap": "preserve",
    // フォーマット対象ファイル
    "include": ["src/"],
    // フォーマット対象除外ファイル
    "exclude": ["src/testdata/", "src/fixtures/**/*.ts"]
  }
}
deno taskコマンドの設定

Node.js のnpm run scriptに相当するスクリプト実行を簡略化するための設定を記述することができます。

{
  "tasks": {
    "start": "deno run --allow-read main.ts"
  }
}

上記の設定を記述しておくことで、npm run scriptと同様に、以下のコマンドでdeno run --allow-read main.tsを省略化した形で実行できます。

deno task start
ロックファイルの設定

Deno が依存関係の整合性を保証するために使用するロックファイルの設定を行うことができます。ロックファイルの場所を指定したり、使用を無効にすることも可能です。何も指定しない場合、デフォルトでロックファイルは使用され、パスは./deno.lockに設定されています。

{
  "lock": {
    "path": "./deno.lock",
    "frozen": true
  }
}
{
  "lock": false
}