เป้าหมายของโปรเจ็กต์ IDX คือการเป็นประโยชน์ต่อนักพัฒนาแอปให้ได้มากที่สุด วิธีหนึ่งที่ IDX จะบรรลุผลได้คือการให้อิสระและความยืดหยุ่นแก่นักพัฒนาซอฟต์แวร์ในการติดตั้งเครื่องมือที่เหมาะสมสำหรับโปรเจ็กต์หนึ่งๆ บนพื้นที่ทำงาน และการปรับแต่งการตั้งค่าเพื่อให้พื้นที่ทำงานเหมาะกับพวกเขา
นิกซ์ + ไอดีเอ็กซ์
IDX ใช้ Nix เพื่อกำหนดการกำหนดค่าสภาพแวดล้อมสำหรับพื้นที่ทำงานแต่ละแห่ง Nix เป็นผู้จัดการแพ็กเกจที่มีฟังก์ชันการทำงานเพียงอย่างเดียวและกำหนดตัวระบุที่ไม่ซ้ำกันให้กับทรัพยากร Dependency แต่ละรายการ ซึ่งหมายความว่าสภาพแวดล้อมของคุณจะมีทรัพยากร Dependency เดียวกันหลายเวอร์ชันได้อย่างราบรื่น นอกจากนี้ยังสามารถทำให้เกิดซ้ำและประกาศได้ด้วย ในบริบทของ 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 หรือไม่เสถียร
ประเภท: รายการแพ็กเกจ
ค่าเริ่มต้น:
[ ]
ช่อง
ที่น่าใช้ที่สุด
แชแนลนี้กำหนดเนื้อหาของอาร์กิวเมนต์ pkgs
Type: หนึ่งในค่า "stable-23.05", "stable-23.11"", "unstable"
ค่าเริ่มต้น:
"stable-23.11"
env
ตัวแปรสภาพแวดล้อมที่ตั้งค่าไว้ภายในสภาพแวดล้อมของนักพัฒนาซอฟต์แวร์
ซึ่งจะเผยแพร่ไปยัง Shell ทั้งหมดของคุณและเซิร์ฟเวอร์ตัวอย่าง ตัวแปรสภาพแวดล้อมมีประโยชน์อย่างยิ่งหากแอปพลิเคชันต้องมีชุดตัวแปรเฉพาะ
ตัวอย่าง
{pkgs, ...}: {
env = {
HELLO = "world";
};
}
Type: ชุดแอตทริบิวต์ของสิ่งต่างๆ
ค่าเริ่มต้น:
{ }
idx.extensions
ส่วนขยายโค้ดที่ต้องการติดตั้งในพื้นที่ทำงาน IDX
นี่คือรายการรหัสส่วนขยายที่ตรงตามเกณฑ์ทั้งหมด เช่น ${publisherId}.${extensionId}
คุณจะดูรายการส่วนขยายที่พร้อมใช้งานได้ใน Open VSX Registry แล้วป้อนลงในไฟล์ 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.*.command
คำสั่งที่จะเรียกใช้
ประเภท: รายการสตริง
ค่าเริ่มต้น:
[ ]
idx.previews.previews.*.cwd
ไดเรกทอรีที่ทำงาน
ประเภท: สตริง
ค่าเริ่มต้น:
""
idx.previews.previews.*.env
ตัวแปรสภาพแวดล้อมที่จะตั้งค่า
ประเภท: ชุดแอตทริบิวต์ของสตริง
ค่าเริ่มต้น:
{ }
idx.previews.previews.*.manager
ผู้จัดการ
Type:
1 จาก 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