本頁面提供工作區環境設定檔的結構定義詳細資訊,該檔案應一律位於 .idx/dev.nix
中。
如要瞭解 Nix 語言,請參閱 官方 Nix 語言教學課程。
packages
要在環境中安裝的套件。
您可以使用 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-24.05」、「unstable」
預設值: "stable-23.11"
env
在開發人員環境中設定的環境變數。
這些會複製到所有殼層和預覽伺服器。如果應用程式需要特定的變數組合,環境變數就特別實用。
每個變數的值可以是字串或字串清單。後者會連接,並穿插冒號字元。
PATH
必須是清單,因為它一律會延伸,且永遠不會完全取代。
範例:
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
類型: ((字串清單) 或任何內容) 的屬性集
預設值: { }
idx.extensions
您要在 IDX 工作區中安裝的程式碼擴充功能。
這是完整的擴充功能 ID 清單,例如 ${publisherId}.${extensionId}
。
您可以在「Open 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";
};
};
};
};
}
Type: (子模組) 的屬性集
預設值: { }
idx.previews.previews.<name>.activity
Android 啟動活動
類型:字串
預設值: ""
idx.previews.previews.<name>.command
要執行的指令
類型:字串清單
預設值: [ ]
idx.previews.previews.<name>.cwd
工作目錄
類型:字串
預設值: ""
idx.previews.previews.<name>.env
要設定的環境變數。
類型:字串的屬性組合
預設值: { }
idx.previews.previews.<name>.manager
管理員
類型:「web」、「flutter」、「android」、「gradle」其中之一
idx.workspace.onCreate
建立及首次開啟工作區時要執行的指令。
這項功能可用於設定開發環境。例如,我們在此指定要執行的 npm install
:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
# files to open when the workspace is first opened.
default.openFiles = [ "src/index.ts" ];
};
}
類型:屬性集合 (路徑或字串或 ({ openFiles = [ string ];}))
預設值: { }
idx.workspace.onStart
每次開啟工作區時執行的指令。
這對啟動建構監視器來說相當實用。舉例來說,我們在此指定要執行的 2 個指令:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
# files to open when the workspace is (re)opened.
default.openFiles = [ "src/index.ts" ];
};
}
類型:屬性集合 (路徑或字串或 ({ openFiles = [ string ];}))
預設值: { }
IDX 服務
開啟工作區時要啟用的常用服務。
舉例來說,如要啟用 Postgres 並使用 pgvector
擴充功能,請將下列內容新增至 dev.nix
:
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
下列各節列出所有支援的服務,以及可設定的選項。
services.docker.enable
是否啟用 Rootless Docker。
類型:布林值
預設值: false
範例:true
services.mongodb.enable
是否要啟用 MongoDB 伺服器。
類型:布林值
預設值: false
範例:true
services.mongodb.package
要使用的 MongoDB 套件。
類型:package
預設值: <derivation mongodb-6.0.11>
services.mongodb.port
設定 Mongod 要監聽的通訊埠。
根據預設,TCP 會停用,且 Mongod 只會監聽 /tmp/mongodb/mongodb.sock。如要連線,請使用連線字串「mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock」
類型:16 位元不帶正負號整數,介於 0 和 65535 之間 (含首尾)
預設值: 0
services.mysql.enable
是否啟用 MySQL 伺服器。
伺服器會使用無密碼的使用者根目錄進行初始化。因此,如要建立其他使用者和資料庫,請使用 mysql -u root
。。
類型:布林值
預設值: false
範例:true
services.mysql.package
要使用的 MySQL 套件。
類型:package
預設值: pkgs.mysql
範例:pkgs.mysql80
services.postgres.enable
是否啟用 PostgreSQL 伺服器。
類型:布林值
預設值: false
範例:true
services.postgres.enableTcp
是否要讓 Postgres 監聽 TCP。
類型:布林值
預設值: true
範例:true
services.postgres.package
要使用的 PostgreSQL 套件。
類型:package
預設值: pkgs.postgresql
範例:pkgs.postgresql_15
services.postgres.extensions
要安裝的 Postgres 擴充功能。
類型:清單 (其中一個為「age」,「apache_datasketches」,「cstore_fdw」,「hypopg」,「jsonb_deep_sum」,「periods」,「pg_auto_failover」,「pg_bigm」,「pg_cron」,「pg_ed25519」,「pg_embedding」,「pg_hint_plan」,「pg_hll」,「pg_ivm」,「pg_net」,「pg_partman」,「pg_rational」,「pg_relusage」,「pg_repack」,「pg_safeupdate」,「pg_similarity」,「pg_topn」,「pg_uuidv7」,「pgaudit」,「pgjwt」,「pgroonga」,「pgrouting」,「pgsql-http」,「pgtap」,「pgvector」,「plpgsql_check」,「plr」,「plv8」,「postgis」,「promscale_extension」,「repmgr」,「rum」,「smlar」,「tds_fdw」,「temporal_tables」,「timescaledb」,「timescaledb-apache」,「timescaledb_toolkit」,「tsearch_extras」,「tsja」,「wal2json」)
預設值: [ ]
範例:[ "pgvector" "postgis" ];
services.pubsub.enable
是否要啟用 Google Pub/Sub 模擬器。
如需進一步瞭解如何使用模擬器,請參閱以下說明文件:https://cloud.google.com/pubsub/docs/emulator#using_the_emulator。
類型:布林值
預設值: false
範例:true
services.pubsub.port
設定 Pub/Sub 要監聽的通訊埠。
類型:16 位元不帶正負號整數,介於 0 和 65535 之間 (含首尾)
預設值: 8085
services.pubsub.project-id
用於執行 Pub/Sub 模擬器的專案 ID。這個專案僅供測試,不必存在,且只能在本機使用。
類型:字串,符合模式 [a-z][a-z0-9-]{5,29}
預設值: "idx-pubsub-emulator"
services.redis.enable
是否啟用 Redis 伺服器。
類型:布林值
預設值: false
範例:true
services.redis.port
設定 Redis 要監聽的通訊埠。
根據預設,TCP 會停用,且 Redis 只會監聽 /tmp/redis/redis.sock。
類型:16 位元不帶正負號整數,介於 0 和 65535 之間 (含首尾)
預設值: 0
services.spanner.enable
是否要啟用 Google Cloud Spanner Emulator。
類型:布林值
預設值: false
範例:true
services.spanner.fault-injection
是否要在交易中啟用隨機錯誤注入功能。
類型:布林值
預設值: false
範例:true
services.spanner.grpc-port
模擬器應繫結的 TCP 通訊埠。
類型:16 位元不帶正負號整數,介於 0 和 65535 之間 (含首尾)
預設值: 9010
services.spanner.rest-port
提供 REST 要求的通訊埠
類型:16 位元不帶正負號整數,介於 0 和 65535 之間 (含首尾)
預設值: 9020