本页详细介绍了工作区环境配置文件的架构,该文件应始终位于 .idx/dev.nix
中。
如需了解 Nix 语言,请参阅 官方 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-24.05”“unstable”之一
默认值: "stable-23.11"
env
在开发者环境中设置的环境变量。
这些变量会传播到您的所有 Shell 和预览服务器。如果您的应用需要一组特定的变量,环境变量会特别有用。
每个变量的值可以是字符串,也可以是字符串列表。后者会串联起来,并穿插有冒号字符。
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";
};
};
};
};
}
类型:(submodule) 的属性集
默认值: { }
idx.previews.previews.<name>.activity
Android 启动 activity
类型:字符串
默认值: ""
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
每当打开工作区时要执行的命令。
这对于启动 build 监视器很有用。例如,我们在此处指定了要运行的 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
是否启用无根 Docker。
类型:布尔值
默认值: false
示例:true
services.mongodb.enable
是否启用 MongoDB 服务器。
类型:布尔值
默认值: false
示例:true
services.mongodb.package
要使用的 MongoDB 软件包。
类型:软件包
默认值: <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 服务器。
服务器使用无密码用户 root 进行初始化。因此,如需创建其他用户和创建数据库,请使用 mysql -u root
。.
类型:布尔值
默认值: false
示例:true
services.mysql.package
要使用的 MySQL 软件包。
类型:软件包
默认值: pkgs.mysql
示例:pkgs.mysql80
services.postgres.enable
是否启用 PostgreSQL 服务器。
类型:布尔值
默认值: false
示例:true
services.postgres.enableTcp
是否启用 Postgres 以监听 TCP。
类型:布尔值
默认值: true
示例:true
services.postgres.package
要使用的 PostgreSQL 软件包。
类型:软件包
默认值: 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 模拟器。
类型:布尔值
默认值: 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