หน้านี้มีรายละเอียดเกี่ยวกับสคีมาสำหรับไฟล์การกำหนดค่าสภาพแวดล้อมของพื้นที่ทำงาน ซึ่งควรอยู่ที่ .idx/dev.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", "stable-24.11" หรือ "unstable"
ค่าเริ่มต้น: "stable-23.11"
env
ตัวแปรสภาพแวดล้อมที่ตั้งค่าไว้ภายในสภาพแวดล้อมของนักพัฒนาซอฟต์แวร์
ระบบจะส่งต่อข้อมูลเหล่านี้ไปยังเชลล์และเซิร์ฟเวอร์แสดงตัวอย่างทั้งหมด ตัวแปรสภาพแวดล้อม จะมีประโยชน์อย่างยิ่งหากแอปพลิเคชันของคุณต้องใช้ชุดตัวแปร ที่เฉพาะเจาะจง
ค่าของตัวแปรแต่ละรายการอาจเป็นสตริงหรือรายการสตริงก็ได้ โดยจะนำค่าหลังมาต่อกันและคั่นด้วยเครื่องหมายโคลอน
PATH
ต้องเป็นรายการ เนื่องจากจะมีการขยายรายการอยู่เสมอและไม่มีการแทนที่ทั้งหมด
ตัวอย่าง
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
ประเภท: ชุดแอตทริบิวต์ของ ((รายการสตริง) หรืออะไรก็ได้)
ค่าเริ่มต้น: { }
idx.extensions
ส่วนขยายโค้ดที่ต้องการติดตั้งในพื้นที่ทำงาน IDX
นี่คือรายการรหัสส่วนขยายที่มีคุณสมบัติครบถ้วน เช่น
${publisherId}.${extensionId}
คุณสามารถดูรายการส่วนขยายที่มีให้บริการได้ในรีจิสทรี Open VSX และป้อนส่วนขยายเหล่านั้นในไฟล์ dev.nix
โดยใช้ ${publisherId}.${extensionId}
ประเภท: รายการ (สตริงหรือเส้นทางที่ไม่ว่างเปล่า)
ค่าเริ่มต้น: [ ]
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.<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" ];
};
}
ประเภท: ชุดแอตทริบิวต์ของ (path หรือ string หรือ ({ 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" ];
};
}
ประเภท: ชุดแอตทริบิวต์ของ (path หรือ string หรือ ({ openFiles = [ string ];}))
ค่าเริ่มต้น: { }
การนำเข้า
คุณขยายไฟล์ dev.nix ด้วยไฟล์ที่นำเข้าได้
# dev.nix
{ pkgs, ... }: {
imports = [
./some-file.nix
];
# ...
}
# some-file.nix
{ pkgs, ... }: {
packages = [
pkgs.python3
];
# ...
}
คุณอาจต้องการนำเข้าไฟล์ .nix
ที่กำหนดเองใน dev.nix
ด้วยเหตุผลหลายประการ ดังนี้
ไฟล์
dev.nix
มีขนาดใหญ่และคุณต้องการแยกเป็นโมดูลเพื่อปรับปรุง ความสามารถในการบำรุงรักษา{ pkgs, ... }: { channel = "stable-24.11"; # ... imports = [ ./env-cfg.nix ./preview-config.nix ]; }
คุณต้องการกำหนดค่าตัวเลือกที่เฉพาะเจาะจงกับสภาพแวดล้อมในเครื่องและเพิ่ม ไฟล์ลงในรายการ
.gitignore
# dev.nix { pkgs, lib, ... }: { # ... imports = lib.optionals (builtins.pathExists ./dev.local.nix ) [ ./dev.local.nix ]; }
#.gitignore .idx/dev.local.nix
ประเภท: รายการเส้นทาง
ค่าเริ่มต้น: [ ]
บริการ
บริการทั่วไปที่ควรเปิดใช้เมื่อเปิดพื้นที่ทำงาน
เช่น หากต้องการเปิดใช้ 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 (รวมทั้ง 2 ค่า)
ค่าเริ่มต้น: 0
services.mysql.enable
จะเปิดใช้เซิร์ฟเวอร์ MySQL หรือไม่
เซิร์ฟเวอร์ได้รับการเริ่มต้นด้วยรูทผู้ใช้แบบไม่มีรหัสผ่าน ดังนั้นหากต้องการสร้างผู้ใช้เพิ่มเติมและสร้างฐานข้อมูล ให้ใช้ 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 (รวมทั้ง 2 ค่า)
ค่าเริ่มต้น: 8085
services.pubsub.project-id
รหัสโปรเจ็กต์ที่จะใช้เรียกใช้โปรแกรมจำลอง Pub/Sub โปรเจ็กต์นี้ใช้สำหรับการทดสอบเท่านั้น ไม่จำเป็นต้องมีอยู่จริงและใช้ในเครื่องเท่านั้น
ประเภท: สตริงที่ตรงกับรูปแบบ [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 (รวมทั้ง 2 ค่า)
ค่าเริ่มต้น: 0
services.spanner.enable
ว่าจะเปิดใช้โปรแกรมจำลอง Google Cloud Spanner หรือไม่
ประเภท: บูลีน
ค่าเริ่มต้น: false
ตัวอย่าง: true
services.spanner.fault-injection
จะเปิดใช้การแทรกข้อบกพร่องแบบสุ่มลงในธุรกรรมหรือไม่
ประเภท: บูลีน
ค่าเริ่มต้น: false
ตัวอย่าง: true
services.spanner.grpc-port
พอร์ต TCP ที่ควรเชื่อมโยงกับโปรแกรมจำลอง
ประเภท: จำนวนเต็มแบบไม่มีเครื่องหมาย 16 บิต ระหว่าง 0 ถึง 65535 (รวมทั้ง 2 ค่า)
ค่าเริ่มต้น: 9010
services.spanner.rest-port
พอร์ตที่คำขอ REST ได้รับการตอบกลับ
ประเภท: จำนวนเต็มแบบไม่มีเครื่องหมาย 16 บิต ระหว่าง 0 ถึง 65535 (รวมทั้ง 2 ค่า)
ค่าเริ่มต้น: 9020