Project IDX ให้คุณปรับแต่งพื้นที่ทำงานตามความต้องการเฉพาะของโปรเจ็กต์ด้วยการกำหนดไฟล์การกำหนดค่า .idx/dev.nix
ไฟล์เดียวซึ่งอธิบายข้อมูลต่อไปนี้
- เครื่องมือของระบบที่คุณต้องเรียกใช้ได้ (เช่น จากเทอร์มินัล) อย่างคอมไพเลอร์หรือไบนารีอื่นๆ
- ส่วนขยาย IDE ที่คุณต้องติดตั้ง (เช่น การรองรับภาษาโปรแกรม)
- ลักษณะที่การแสดงตัวอย่างแอปจะปรากฏขึ้น (เช่น คำสั่งเพื่อเรียกใช้เว็บเซิร์ฟเวอร์)
- ตัวแปรสภาพแวดล้อมส่วนกลางที่พร้อมใช้งานกับเซิร์ฟเวอร์ภายในที่ทำงานในพื้นที่ทำงาน
ดูข้อมูลอ้างอิง dev.nix
สำหรับคำอธิบายทั้งหมดของสิ่งที่พร้อมใช้งาน
Nix และ IDX
IDX ใช้ Nix ในการกำหนดการกำหนดค่าสภาพแวดล้อมสำหรับพื้นที่ทำงานแต่ละแห่ง โดย IDX ใช้สิ่งต่อไปนี้
ภาษาโปรแกรม Nix เพื่ออธิบายสภาพแวดล้อมของพื้นที่ทำงาน Nix เป็นภาษาโปรแกรมที่ใช้งานได้ แอตทริบิวต์และไลบรารีแพ็กเกจที่คุณกำหนดในไฟล์
dev.nix
จะเป็นไปตามไวยากรณ์ชุดแอตทริบิวต์ Nixตัวจัดการแพ็กเกจ Nix เพื่อจัดการเครื่องมือระบบที่พื้นที่ทำงานของคุณใช้ได้ ซึ่งคล้ายกับตัวจัดการแพ็กเกจเฉพาะระบบปฏิบัติการ เช่น APT (
apt
และapt-get
), Homeบรูรณ์ (brew
) และdpkg
เนื่องจากสภาพแวดล้อมของ Nix นั้นทำซ้ำและมีการประกาศ ในบริบทของ IDX หมายความว่าคุณสามารถแชร์ไฟล์การกำหนดค่า Nix เป็นส่วนหนึ่งของที่เก็บ Git เพื่อให้แน่ใจว่าทุกคนที่ทำงานในโปรเจ็กต์จะมีการกำหนดค่าสภาพแวดล้อมเดียวกัน
ตัวอย่างพื้นฐาน
ตัวอย่างต่อไปนี้แสดงการกำหนดค่าสภาพแวดล้อมพื้นฐานของการเปิดใช้การแสดงตัวอย่าง
{ 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";
};
};
};
}
เพิ่มเครื่องมือระบบ
หากต้องการเพิ่มเครื่องมือระบบลงในพื้นที่ทำงาน เช่น โปรแกรมคอมไพเลอร์หรือโปรแกรม CLI สำหรับบริการระบบคลาวด์ ให้ค้นหารหัสแพ็กเกจที่ไม่ซ้ำกันในรีจิสทรีแพ็กเกจ Nix แล้วเพิ่มลงในออบเจ็กต์ dev.nix
ของไฟล์ packages
ขึ้นต้นด้วย "pkgs.:
{ 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
];
...
}
ซึ่งแตกต่างจากวิธีที่โดยปกติคุณอาจติดตั้งแพ็กเกจระบบโดยใช้ตัวจัดการแพ็กเกจเฉพาะระบบปฏิบัติการ เช่น APT (apt
และ apt-get
), HomeBurk (brew
) และ dpkg
การอธิบายอย่างชัดเจนว่าจำเป็นต้องใช้แพ็กเกจระบบใดจะทำให้พื้นที่ทำงานของ IDX แชร์และทำซ้ำได้ง่ายขึ้น
ใช้ไบนารีของโหนดภายใน
คุณสามารถดำเนินการไบนารีที่เกี่ยวข้องกับแพ็กเกจโหนดที่ติดตั้งในเครื่อง (เช่น แพ็กเกจที่กำหนดไว้ใน package.json
) ในแผงเทอร์มินัลโดยเรียกใช้แพ็กเกจโหนดด้วย npx
ได้เช่นเดียวกับในเครื่องของคุณ
เพื่อความสะดวกเพิ่มเติม หากคุณอยู่ในไดเรกทอรีที่มีโฟลเดอร์ node_modules
(เช่น ไดเรกทอรีรูทของโปรเจ็กต์เว็บ) คุณจะเรียกใช้ไบนารีที่ติดตั้งไว้ในเครื่องได้โดยตรง โดยไม่ต้องมี npx
นำหน้า
เพิ่มคอมโพเนนต์ gcloud
การกำหนดค่าเริ่มต้นของ gcloud
CLI สำหรับ Google Cloud จะพร้อมใช้งานในพื้นที่ทำงานของ IDX ทั้งหมด
หากต้องการคอมโพเนนต์เพิ่มเติม คุณก็เพิ่มองค์ประกอบเหล่านั้นลงในไฟล์ dev.nix
ได้โดยทำดังนี้
{ pkgs }: {
packages = [
...
(pkgs.google-cloud-sdk.withExtraComponents [
pkgs.google-cloud-sdk.components.cloud-datastore-emulator
])
...
];
}
เพิ่มส่วนขยาย IDE
คุณติดตั้งส่วนขยายใน IDX โดยใช้รีจิสทรีส่วนขยาย OpenVSX ได้ 2 วิธี ดังนี้
ใช้แผงส่วนขยายใน IDX เพื่อค้นหาและติดตั้งส่วนขยาย วิธีนี้เหมาะสําหรับส่วนขยายที่เจาะจงผู้ใช้ เช่น
- ธีมสีที่กำหนดเอง
เพิ่มนามสกุลลงในไฟล์
dev.nix
ส่วนขยายเหล่านี้จะติดตั้งโดยอัตโนมัติเมื่อคุณแชร์การกำหนดค่าพื้นที่ทำงาน วิธีการนี้เหมาะสําหรับส่วนขยายเฉพาะโปรเจ็กต์ เช่น- ส่วนขยายภาษาโปรแกรม รวมถึงโปรแกรมแก้ไขข้อบกพร่องเฉพาะภาษา
- ส่วนขยายอย่างเป็นทางการสำหรับบริการระบบคลาวด์ที่ใช้ในโปรเจ็กต์ของคุณ
- ตัวจัดรูปแบบโค้ด
สำหรับวิธีหลัง คุณสามารถรวมส่วนขยาย IDE ในไฟล์ dev.nix
โดยหารหัสส่วนขยายที่สมบูรณ์ในตัวเอง (จากแบบฟอร์ม <publisher>.<id>
) และเพิ่มลงในออบเจ็กต์ idx.extensions
ดังนี้
{ pkgs, ... }: {
...
# Search for the extensions you want on https://open-vsx.org/ and use the format
# "<publisher>.<id>"
idx.extensions = [
"angular.ng-template"
];
...
}
เพิ่มบริการทั่วไป
นอกจากนี้ IDX ยังมีการตั้งค่าและกำหนดค่าที่ง่ายขึ้นสำหรับบริการทั่วไปที่คุณอาจต้องใช้ในระหว่างการพัฒนา ดังนี้
- คอนเทนเนอร์
- Docker (
services.docker.*
)
- Docker (
- การรับส่งข้อความ
- โปรแกรมจำลอง Pub/Sub (
services.pubsub.*
)
- โปรแกรมจำลอง Pub/Sub (
- ฐานข้อมูล
- MySQL (
services.mysql.*
) - โพสต์เกรส (
services.postgres.*
) - Redis (
services.redis.*
) - Spanner (
services.spanner.*
)
- MySQL (
ดูรายละเอียดเกี่ยวกับการเปิดใช้บริการเหล่านี้ในพื้นที่ทำงานของคุณที่ส่วน services.*
ของข้อมูลอ้างอิง dev.nix
ปรับแต่งตัวอย่าง
ดูรายละเอียดเกี่ยวกับวิธีปรับแต่งหน้าตัวอย่างแอปได้ในเอกสารประกอบสำหรับตัวอย่าง
ดูตัวเลือกการปรับแต่งทั้งหมด
ดูข้อมูลอ้างอิง dev.nix
สำหรับคำอธิบายโดยละเอียดเกี่ยวกับสคีมาการกำหนดค่าสภาพแวดล้อม