ปรับแต่งพื้นที่ทำงาน IDX

เป้าหมายของโปรเจ็กต์ 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