專案 IDX 的目標是盡可能為開發人員提供實用服務。IDX 達成此目的的方法之一,是讓開發人員能夠自由且靈活地在工作區中為任何專案安裝合適的工具,並自訂各項設定,以便讓其工作區用於處理用途。
Nix + IDX
IDX 使用 Nix 定義每個工作區的環境設定。Nix 是純粹的套件管理工具,並會為每個依附元件指派專屬 ID,最終意味您的環境可以順暢包含相同依附元件的多個版本。這個 API 也可以重現且宣告式。在 IDX 中,這表示您可以在不同工作區之間共用 Nix 設定檔,載入相同的環境設定。
IDX 會利用 .idx/dev.nix
檔案,直接從程式碼存放區定義預覽環境和工作區套件設定。此檔案中定義的屬性和套件程式庫,會遵循 Nix 屬性集語法。
以下是啟用預覽功能的基本環境設定範例:
{ 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";
};
};
};
}
Nix 屬性和套件程式庫
包裹
要在環境中安裝的套件。
您可以使用 pkgs
引數選取要安裝的套件,例如 pkgs.python3
。請注意,pkgs
的內容取決於所選的 channel
頻道選項。
示例:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
您可以在這裡搜尋可用的套件:stable-23.11 或 unstable。
類型:套件清單
預設:
[ ]
頻道
要使用的 nixpkgs 通道。
此管道定義 pkgs
引數的內容。
類型:其中一種為「stable-23.05」、「stable-23.11」、「不穩定」
預設:
"stable-23.11"
env
在開發人員環境中設定的環境變數。
這些變更會套用至所有殼層和預覽伺服器。 如果應用程式需要一組特定的變數,環境變數會特別實用。
示例:
{pkgs, ...}: {
env = {
HELLO = "world";
};
}
類型:任一屬性集
預設:
{ }
idx.extensions
您要在 IDX 工作區中安裝的程式碼擴充功能。
這是完整的擴充內容 ID (例如 ${publisherId}.${extensionId}
)。
您可以在開啟 VSX Registry 中找到可用的擴充功能清單,並於 ${publisherId}.${extensionId}
前在 dev.nix
檔案中輸入擴充功能。
類型:包含 (非空白字串或路徑) 的清單
預設:
[ ]
idx.previews.enable
將其設為 true
即可啟用 IDX 預覽。
這項功能可讓您在開發應用程式時自動執行及重新載入應用程式。
類型:布林值
預設:
true
範例:
true
idx.previews.previews
預覽設定。
定義 IDX 在開發人員環境中執行的指令。
示例:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
類型:一組 (子模組) 屬性
預設:
{ }
idx.previews.previews.*.command
要執行的指令
類型:字串清單
預設:
[ ]
idx.previews.previews.*.cwd
工作目錄
類型:字串
預設:
""
idx.previews.previews.*.env
要設定的環境變數。
類型:字串屬性
預設:
{ }
idx.previews.previews.*.manager
經理
類型:web
之一或 flutter
idx.workspace.onCreate
建立工作區並首次開啟時要執行的指令。
這有助於設定開發環境。例如,我們要指定執行 npm install
:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
};
}
類型:一組 (路徑或字串) 屬性
預設:
{ }
idx.workspace.onStart
每當工作區開啟時要執行的指令,
這有助於啟動看守工具。例如,我們要指定 2 個要執行的指令:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
};
}
類型:一組 (路徑或字串) 屬性
預設:
{ }
services.docker.enable
是否要啟用無根 Docker。
類型:布林值
預設:
false
範例:
true