Tuỳ chỉnh không gian làm việc của IDX

Project IDX cho phép bạn điều chỉnh không gian làm việc của mình cho phù hợp với nhu cầu riêng của dự án bằng cách xác định một tệp cấu hình .idx/dev.nix duy nhất mô tả:

  • Các công cụ hệ thống mà bạn cần để chạy (ví dụ: từ Thiết bị đầu cuối), chẳng hạn như trình biên dịch hoặc các tệp nhị phân khác.
  • Tiện ích IDE mà bạn cần cài đặt (ví dụ: hỗ trợ ngôn ngữ lập trình).
  • Cách hiển thị bản xem trước ứng dụng (ví dụ: lệnh để chạy máy chủ web của bạn).
  • Các biến môi trường toàn cầu áp dụng cho các máy chủ cục bộ chạy trong không gian làm việc của bạn.

Hãy xem tài liệu tham khảo về dev.nix để biết nội dung mô tả đầy đủ về những tính năng hiện có.

Nix và IDX

IDX sử dụng Nix để xác định cấu hình môi trường cho mỗi không gian làm việc. Cụ thể, IDX sử dụng:

  • Ngôn ngữ lập trình Nix để mô tả môi trường không gian làm việc. Nix là một ngôn ngữ lập trình hàm. Các thuộc tính và thư viện gói mà bạn có thể xác định trong tệp dev.nix tuân theo cú pháp nhóm thuộc tính Nix.

  • Trình quản lý gói Nix để quản lý các công cụ hệ thống có sẵn cho không gian làm việc của bạn. Việc này tương tự như các trình quản lý gói dành riêng cho hệ điều hành, chẳng hạn như APT (aptapt-get), Homebrew (brew) và dpkg.

Vì môi trường Nix có thể tái tạo và mang tính khai báo, nên trong ngữ cảnh IDX, điều này có nghĩa là bạn có thể chia sẻ tệp cấu hình Nix như một phần của kho lưu trữ Git để đảm bảo mọi người làm việc trong dự án của bạn đều có cùng cấu hình môi trường.

Một ví dụ cơ bản

Ví dụ sau đây minh hoạ cấu hình môi trường cơ bản cho phép xem trước:

{ 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";
      };
    };
  };
}

Thêm công cụ hệ thống

Để thêm các công cụ hệ thống vào không gian làm việc của bạn, chẳng hạn như trình biên dịch hoặc chương trình CLI cho các dịch vụ đám mây, hãy tìm mã gói duy nhất trong sổ đăng ký gói Nix rồi thêm mã đó vào đối tượng packages của tệp dev.nix với tiền tố là `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
  ];
  ...
}

Cách này khác với cách bạn thường có thể cài đặt các gói hệ thống bằng trình quản lý gói dành riêng cho hệ điều hành, chẳng hạn như APT (aptapt-get), Homebrew (brew) và dpkg. Việc mô tả chính xác các gói hệ thống cần thiết giúp không gian làm việc IDX dễ dàng chia sẻ và tái tạo hơn.

Sử dụng tệp nhị phân nút cục bộ

Cũng giống như trên máy cục bộ, tệp nhị phân liên quan đến gói nút được cài đặt cục bộ (tức là các gói được xác định trong package.json) có thể được thực thi trong Bảng điều khiển đầu cuối bằng cách gọi chúng bằng lệnh npx.

Để thuận tiện hơn, nếu bạn đang ở một thư mục có thư mục node_modules (chẳng hạn như thư mục gốc của dự án web), thì bạn có thể gọi trực tiếp các tệp nhị phân được cài đặt cục bộ mà không cần tiền tố npx.

Thêm thành phần gcloud

Tất cả không gian làm việc IDX đều có thể sử dụng cấu hình mặc định của CLI gcloud cho Google Cloud.

Nếu cần thêm thành phần, bạn có thể thêm các thành phần đó vào tệp dev.nix như bên dưới:

{ pkgs }: {
  packages = [
    ...
    (pkgs.google-cloud-sdk.withExtraComponents [
      pkgs.google-cloud-sdk.components.cloud-datastore-emulator
    ])
    ...
  ];
}

Thêm tiện ích IDE

Bạn có thể cài đặt tiện ích trong IDX bằng cách sử dụng sổ đăng ký tiện ích OpenVSX theo 2 cách:

  • Bằng cách sử dụng bảng điều khiển Tiện ích trong IDX để khám phá và cài đặt các tiện ích. Đây là phương pháp phù hợp nhất cho tiện ích dành riêng cho người dùng, chẳng hạn như:

    • Chủ đề màu sắc tuỳ chỉnh
  • Bằng cách thêm đuôi vào tệp dev.nix. Các tiện ích này sẽ tự động được cài đặt khi bạn chia sẻ cấu hình không gian làm việc của mình. Phương pháp này phù hợp nhất cho các phần mở rộng dành riêng cho dự án, chẳng hạn như:

    • Tiện ích ngôn ngữ lập trình, bao gồm cả trình gỡ lỗi dành riêng cho ngôn ngữ
    • Các tiện ích chính thức cho các dịch vụ đám mây được sử dụng trong dự án của bạn
    • Trình định dạng mã

Đối với phương pháp thứ hai, bạn có thể đưa các tiện ích IDE vào tệp dev.nix bằng cách tìm mã tiện ích đủ điều kiện (có dạng <publisher>.<id>) rồi thêm mã đó vào đối tượng idx.extensions như sau:

{ pkgs, ... }: {
  ...
  # Search for the extensions you want on https://open-vsx.org/ and use the format
  # "<publisher>.<id>"
  idx.extensions = [
    "angular.ng-template"
  ];
  ...
}

Thêm các dịch vụ phổ biến

IDX cũng cung cấp quy trình thiết lập và cấu hình đơn giản cho các dịch vụ phổ biến mà bạn có thể cần trong quá trình phát triển, bao gồm:

  • Vùng chứa
    • Docker (services.docker.*)
  • Nhắn tin
    • Trình mô phỏng Pub/Sub (services.pubsub.*)
  • Cơ sở dữ liệu
    • MySQL (services.mysql.*)
    • Postgres (services.postgres.*)
    • Redis (services.redis.*)
    • Cờ lê (services.spanner.*)

Để biết thông tin chi tiết về cách bật các dịch vụ này trong không gian làm việc của bạn, hãy xem các phần services.* trong tài liệu tham khảo về dev.nix.

Tuỳ chỉnh bản xem trước

Để biết thông tin chi tiết về cách tuỳ chỉnh bản xem trước ứng dụng, hãy xem tài liệu về bản xem trước.

Xem tất cả các lựa chọn tuỳ chỉnh

Hãy xem tài liệu tham khảo về dev.nix để biết nội dung mô tả chi tiết về giản đồ cấu hình môi trường.