Node.js と Docker
Docker を使用すると、Node.js アプリケーションをすばやくブートストラップして、IntelliJ IDEA から実行、デバッグ、プロファイリングできます。 IDE によって初期構成が自動的に行われます。新規 Dockerfile の作成、イメージのビルドと実行、ソースコードの同期、Docker コンテナー内での npm依存関係のインストールが含まれます。
WebStorm と Docker のクイックツアー(英語)でいくつかの例を見つけることができます。
始める前に
設定 | プラグイン ページの インストール済み タブで、 JavaScript and TypeScriptおよび Dockerに必要なプラグインが有効になっていることを確認します。 詳細は、 プラグインの管理を参照してください。
JetBrains Marketplaceからプラグインをインストールするの説明に従って、 設定 | プラグイン ページ、タブ Marketplace で Node.js、 Node.js Remote Interpreter、 JavaScript Debuggerプラグインをインストールします。 プラグインは IntelliJ IDEA Ultimate でのみ利用できます。
Docker の説明に従って Dockerをダウンロード、インストール、および構成します。
Docker で Node.js ランタイムを構成する
Docker の Node.js ランタイムは、 Node.js リモートランタイムの構成 ダイアログで構成されます。 このダイアログは、 設定 ダイアログの JavaScript ランタイム ページから開くことができます。また、Docker でアプリケーションを実行またはデバッグするために Node.js の実行 / デバッグ構成を作成または編集するときに開くこともできます。
推奨される方法は、 設定 ダイアログでリモート Node.js ランタイムを構成することです。 この場合、プロジェクトのデフォルトとしてランタイムと関連するパッケージマネージャーを設定できます。 その結果、Docker で構成された Node.js ランタイムを使用してアプリを実行およびデバッグできるだけでなく、プロジェクトの依存関係を管理し、テストを実行し、コードをリントすることもできます。 以下の npm、pnpm、yarn と Docker、 アプリケーションをテストする、 Docker を使用した ESLint を参照してください。
Node.js の実行 / デバッグ構成で直接構成するリモート Node.js ランタイムは、この実行 / デバッグ構成でのみ使用できます。
リモート Node.js ランタイムを作成する
設定 ダイアログ(Ctrl+Alt+S )を開き、 に進みます。
Node runtime フィールドの横にある
をクリックします。

現在構成されているすべてのランタイムのリストが表示された Node.js ランタイムダイアログで、ツールバーの
をクリックし、コンテキストメニューから リモートの追加 を選択します。

開いた Node.js リモート ランタイムの構成ダイアログで、 Docker を選択します。
サーバー リストから、使用する Docker 構成を選択します。

または、フィールドの横にある 新規 をクリックし、 Docker サポートを有効にする説明に従って Docker サーバーを構成します。
イメージ名 リストから、使用するイメージを選択します。

Node.js 実行可能ファイルは自動的に検出され、 Node.js ランタイムパス フィールドに表示されます。
OK をクリックして、新しいランタイムがリストに追加される Node.js ランタイム ダイアログに戻ります。

新しく構成されたランタイムをプロジェクトのデフォルトとして設定するには、リストでランタイムを選択し、 OK をクリックして JavaScript ランタイム ダイアログに戻ります。

IntelliJ IDEA は、たとえば実行 / デバッグ構成を作成するときに、 Node runtime リストから
プロジェクトエイリアスを選択するたびに、このインタープリターを自動的に使用します。新しいランタイムに関連付けられたパッケージマネージャーを使用してプロジェクトの依存関係を管理するには、このパッケージマネージャーをプロジェクトのデフォルトとして設定します。 これを行うには、 パッケージマネージャー(M) フィールドでパッケージマネージャーの場所を指定します。 デフォルトのプロジェクト Node.js ランタイムとパッケージマネージャーを指定するから詳細を参照してください。
デフォルトのプロジェクト Node.js ランタイムとパッケージマネージャーを指定する
IntelliJ IDEA は、実行 / デバッグ構成の作成時など、 Node runtime リストから プロジェクト エイリアスを選択するたびに、デフォルトのプロジェクトインタープリターを自動的に使用します。
デフォルトのプロジェクトパッケージマネージャーは、依存関係を管理するために自動的に使用されます。たとえば、 package.json ファイルから <package manager> install を実行したり、ESLint、Prettier などのサードパーティ製ツールをインストールしたりします。
設定 ダイアログ(Ctrl+Alt+S )を開き、 に進みます。
Node runtime リストから、現在のプロジェクトでデフォルトで使用する構成を選択します。
パッケージマネージャー リストから、使用するパッケージマネージャーに関連付けられているエイリアスを選択します。 IntelliJ IDEA はその位置を自動的に検出します。

または、必要なパッケージマネージャーの場所を手動で指定します。
npm 実行可能ファイルのデフォルトの場所は
/usr/local/lib/node_modules/npmです。pnpm のデフォルトの場所は、インストール方法によって異なります。
npm を介してインストールするための /usr/local/lib/node_modules/pnpm 。
カールを介してインストールするための /usr/local/pnpm-global/<version>/node_modules/pnpm (
curl -f https://get.pnpm.io/<version>.js | node - add --global pnpm)。
詳細については、 pnpm 公式 Web サイト(英語)を参照してください。
ヤーンのデフォルトの場所は /opt/yarn-<version>5 で、たとえば /opt/yarn-v1.22.5 です。

npm、pnpm、yarn と Docker
IntelliJ IDEA を使用すると、ローカルプロジェクトの場合と同じように、プロジェクトの依存関係を管理し、Docker コンテナーでスクリプトを実行できます。
Docker のリモート Node.js ランタイムが構成されていることを確認してください。
プロジェクトの依存関係を管理します。
package.json ファイルを開き、ローカル開発と同じ方法で進めます。たとえば、コンテキストメニューから '<パッケージマネージャー> のインストール' の実行 を選択します。 依存関係は、Docker コンテナー内のデフォルトのパッケージマネージャーを使用してインストールされ、プロジェクトに node_modules フォルダーが表示されます。
または、組み込み ターミナル (Alt+F12 )を開き、必要なパッケージを手動でインストールします。たとえば、
npm install --save-dev eslintを実行します。
詳しくは、 パッケージのインストールと更新 と package.json を編集する を参照してください。
Node.js 実行構成を作成する
に移動します。 開いた 構成の編集 ダイアログで、ツールバーの
をクリックし、コンテキストメニューから Node.js を選択します。 「実行 / デバッグ構成: Node.js 」ダイアログが開きます。
ファイル フィールドで、それを開始するアプリケーションのメインファイルへのパスを指定します(たとえば、 Express(英語) アプリケーションの場合は bin/www )。

必要に応じて、 Node.js アプリケーションの実行とデバッグで説明されているいくつかのオプション設定を指定します。
Node runtime リストから、Docker 環境で関連するリモート Node.js ランタイムを選択します。

または、 Node runtime フィールドの横にある
をクリックし、 上記のようにリモート Node.js ランタイムを構成します。

自動生成された Docker コンテナーの設定を確認します。
をクリックすると、ポップアップで設定が開きます。

オプション: 下記の説明に従ってポートバインディングを構成します。
ポートバインディングを構成する (オプション)
基本的に、アプリケーションが実行されているポートをコンテナーのポートにバインドする必要があります。
Docker コンテナー設定の編集フィールドの横にある をクリックして、表示される Docker コンテナー設定の編集 ダイアログで設定を指定します。
ポートバインディング 領域を展開し、ツールバーの
をクリックします。 開いた ポートバインディング ダイアログで、ポートを次のようにマップします。
オプションを変更 をクリックして、指定するオプションを選択します。

「コンテナーポート 」フィールドに、アプリケーションで指定されているポートを入力します。
ホストポート フィールドに、コンピューターからアプリケーションにアクセスするための任意のポートを入力します。
ホストIP フィールドに、Docker のホストの IP アドレスを入力します。
localhostを使用している場合は、127.0.0.1を入力します。
OK をクリックして、新しいポートバインディングがリストに追加される Docker コンテナー設定の編集 ダイアログに戻ります。

OK をクリックして、 実行/デバッグ構成: Node.js ダイアログに戻り、ポートバインディングが Docker コンテナーの設定 フィールドに表示されます。

アプリケーションを実行する

上記のようにNode.js 実行/デバッグ構成を作成します。
ツールバーの 実行 / デバッグ構成を選択 リストから、 新しく作成された Node.js 構成を選択します。
をクリックして 実行 / デバッグ構成を選択 リストに移動します。
アプリケーションの出力を確認する
アプリケーションが期待どおりに機能することを確認するために、IntelliJ IDEA 組み込みの HTTP クライアントから HTTP リクエストを実行できます。

HTTP リクエストファイルを作成します。
次のリクエストを書いてください。
GET http://<host IP>:<container port>/例:
GET http://127.0.0.1:3010/ガターの
をクリックし、 http://<ホスト IP>:<コンテナーポート>/ の実行 の横にある
をクリックします。

アプリケーションの出力は、 実行 ツールウィンドウの別のタブに表示されます。

アプリケーションをデバッグする

アプリケーションをテストする
IntelliJ IDEA を使用すると、ローカルで実行するのと同じ方法で、 Mocha(英語) テストと Jest(英語) テストを Docker コンテナー内で実行できます。 詳細については、 Mocha および Jest を参照してください。
Docker の関連するリモート Node.js ランタイムが構成され、プロジェクトのデフォルトとして選択されていることを確認してください。 また、このリモートランタイムに関連付けられたパッケージマネージャーがプロジェクトのデフォルトとして設定されていることを確認してください。 詳細については、 Docker で Node.js ランタイムを構成する および npm、pnpm、yarn と Docker を参照してください。
package.json を開き、必要なテストフレームワークが
devDependenciesセクションにリストされていることを確認します。{ "name": "node-express", "version": "0.0.0", "private": true, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^3.0.2" }, "devDependencies": { "chai": "^4.3.4", "concurrently": "^6.3.0", "eslint": "^8.1.0", "http-server": "^14.0.0", "jest": "^27.3.1", "mocha": "^9.1.3", "nyc": "^15.1.0" } }エディターの任意の場所を右クリックして、コンテキストメニューから '<パッケージマネージャー> のインストール' の実行 を選択します。
Mocha オフィシャル Web サイト(英語)または Jest オフィシャル Web サイト(英語)の指示に従ってテストを作成します。
ユニットテストが保存されているフォルダーをテストソースフォルダーとしてマークします(コンテンツルート を参照)。
Mocha テストの実行、 Mocha テストのデバッグ、 Jest テストの実行、 Jest テストのデバッグに従って、エディターから直接単一のテストを実行およびデバッグするか、実行 / デバッグ構成を作成して、テストの一部またはすべてを起動します。
Docker を使用した ESLint
IntelliJ IDEA を使用すると、ローカルで実行するのと同じ方法で、Docker コンテナー内のコードに対して ESLint(英語) を実行できます。 詳細については、 JavaScript リンター と ESLint を参照してください。
Docker の関連するリモート Node.js ランタイムが構成され、プロジェクトのデフォルトとして選択されていることを確認してください。 また、このリモートランタイムに関連付けられたパッケージマネージャーがプロジェクトのデフォルトとして設定されていることを確認してください。 詳細については、 Docker で Node.js ランタイムを構成する および npm、pnpm、yarn と Docker を参照してください。
package.json を開き、ESLint が
devDependenciesセクションにリストされていることを確認します。{ "name": "node-express", "version": "0.0.0", "private": true, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^3.0.2" }, "devDependencies": { "eslint": "^8.1.0" } }エディターの任意の場所を右クリックして、コンテキストメニューから '<パッケージマネージャー> のインストール' の実行 を選択します。
その後、ESLint は、コードをローカルで操作する場合と同じように機能します。 検出された不一致の説明をエディターまたは 問題 ツールウィンドウで表示し、提案されたクイックフィックスを適用します。 詳細については、 JavaScript リンター と ESLint を参照してください。
