Project IDX では、プロジェクト固有のニーズに合わせてワークスペースをカスタマイズできます
次の内容を記述した .idx/dev.nix
構成ファイルを 1 つ定義します。
- 実行可能にする必要があるシステムツール( ターミナルなど)。
- インストールする必要がある IDE 拡張機能(プログラミング言語など) サポート)。
- アプリのプレビューの表示方法( (ウェブサーバーを実行するコマンドなど)。
- グローバル 環境変数。 できます。
詳細については、dev.nix
リファレンスをご覧ください。
説明があります。
Nix、IDX
IDX は Nix を使用して 環境構成を管理します。具体的には、IDX は次のものを使用します。
Nix プログラミング言語を使用して、 学びます。Nix は関数型プログラミング言語です。
dev.nix
ファイルで定義できる属性とパッケージ ライブラリ Nix 属性セットに従います。 構文をご覧ください。Nix パッケージ管理システム: コンテナ イメージの ワークスペースで利用できるシステムツールも 用意されていますこれは、OS 固有の機能に似ています。 APT(
apt
とapt-get
)、Homebird(brew
)、dpkg
。
Nix 環境は再現可能で宣言型であるため、 つまり、IDX 構成ファイルの一部として Nix 構成ファイルを Git リポジトリを使用することで、プロジェクトに携わるすべてのメンバーが同じリソースを共有 必要があります。
基本的な例
次の例は、プレビューを有効にする基本的な環境構成を示しています。
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-23.11"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodejs_18
];
# Sets environment variables in the workspace
env = {
SOME_ENV_VAR = "hello";
};
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
idx.extensions = [
"angular.ng-template"
];
# Enable previews and customize configuration
idx.previews = {
enable = true;
previews = {
web = {
command = [
"npm"
"run"
"start"
"--"
"--port"
"$PORT"
"--host"
"0.0.0.0"
"--disable-host-check"
];
manager = "web";
};
};
};
}
システムツールの追加
コンパイラや CLI プログラムなどのシステムツールをワークスペースに追加するには、
一意のパッケージ ID を Nix パッケージで見つけて
レジストリに追加して、dev.nix
ファイルの
packages
オブジェクトであり、先頭に `pkgs.:
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-23.11"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodejs_18
];
...
}
これは、Terraform を使用してシステム パッケージをインストールする通常の方法とは異なります。
APT(apt
と apt-get
)、Homebird などの OS 固有のパッケージ マネージャー
(brew
)、dpkg
。どのシステム パッケージがコンテナにインストールされるかを
IDX ワークスペースの共有と再現が容易になります
ローカルノードのバイナリを使用する
ローカルマシンと同様に、ローカルにインストールされたノードに関連するバイナリは
パッケージ(package.json
で定義されたパッケージ)は、
ターミナル パネル(npx
で呼び出します)
コマンドで確認できます。
また、node_modules
があるディレクトリにいる場合にも便利です。
フォルダ(ウェブ プロジェクトのルート ディレクトリなど)、ローカルにインストールされたバイナリ
npx
接頭辞を付けずに直接呼び出すことができます。
gcloud
コンポーネントを追加する
Google 用 gcloud
CLI のデフォルト構成
Cloud はすべての IDX で利用可能
できます。
追加のコンポーネントが必要な場合は、次のように dev.nix
ファイルに追加できます。
次のようになります。
{ pkgs }: {
packages = [
...
(pkgs.google-cloud-sdk.withExtraComponents [
pkgs.google-cloud-sdk.components.cloud-datastore-emulator
])
...
];
}
IDE 拡張機能を追加する
IDX に拡張機能をインストールするには、 OpenVSX 拡張機能レジストリには、次の 2 つの方法があります。
IDX の [Extensions] パネルを使用して検出とインストールを行う できます。この方法は、次のようなユーザー固有の拡張機能に最適です。
- カスタムカラーテーマ
dev.nix
ファイルに拡張機能を追加する。これらの拡張機能は 設定を共有すると自動的にインストールされます。この 次のようなプロジェクト固有の拡張機能に最適です。- プログラミング言語の拡張機能(言語固有のデバッガを含む)
- プロジェクトで使用されるクラウド サービスの正式な拡張機能
- コード フォーマッタ
後者の方法では、dev.nix
ファイルに IDE 拡張機能を含めることができます。
完全修飾された拡張機能 ID(<publisher>.<id>
形式)を見つけて idx.extensions
に追加します。
オブジェクトを次のように変更します。
{ pkgs, ... }: {
...
# Search for the extensions you want on https://open-vsx.org/ and use the format
# "<publisher>.<id>"
idx.extensions = [
"angular.ng-template"
];
...
}
共通サービスを追加
IDX では、一般的なサービスのセットアップと構成も簡素化されています。 次のような作業が必要になる可能性があります。
- コンテナ
<ph type="x-smartling-placeholder">
- </ph>
- Docker(
services.docker.*
)
- Docker(
- メッセージ
<ph type="x-smartling-placeholder">
- </ph>
- Pub/Sub エミュレータ(
services.pubsub.*
)
- Pub/Sub エミュレータ(
- データベース
<ph type="x-smartling-placeholder">
- </ph>
- MySQL(
services.mysql.*
) - Postgres(
services.postgres.*
) - Redis(
services.redis.*
) - Spanner(
services.spanner.*
)
- MySQL(
ワークスペースでこれらのサービスを有効にする方法について詳しくは、services.*
をご覧ください。
dev.nix
リファレンスの対応する部分をご覧ください。
プレビューをカスタマイズする
アプリのプレビューをカスタマイズする方法について詳しくは、 プレビューをご覧ください。
「ワークスペースの設定」アイコン
ワークスペースのカスタム アイコンを選択するには、
.idx
ディレクトリ内の dev.nix
ファイルの隣にある icon.png
。IDX
このアイコンを使用して、ダッシュボードでワークスペースを表します。
このファイルはソース管理(Git など)にチェックインできるため、 プロジェクトに携わるすべてのユーザーに、同じアイコンが いくつかあります。ファイルは Git ブランチによって異なるため、 「ベータ版」では、ワークスペースを視覚的に区別することもできます。および 「本番」アプリのリリース情報などです
カスタマイズ内容をテンプレートに変える
環境構成を「スターター環境」にすること誰でも利用可能 詳細については、カスタム コンテナ イメージの作成に関するドキュメント テンプレート。
すべてのカスタマイズ オプションを見る
詳細については、dev.nix
リファレンスをご覧ください。
環境構成スキーマの説明です。