Sesuaikan ruang kerja IDX Anda

Project IDX memungkinkan Anda menyesuaikan ruang kerja dengan kebutuhan unik project Anda dengan menentukan satu file konfigurasi .idx/dev.nix yang menjelaskan:

  • Alat sistem yang harus dapat Anda jalankan (misalnya, dari Terminal), seperti compiler atau biner lainnya.
  • Ekstensi IDE yang perlu diinstal (misalnya, dukungan bahasa pemrograman).
  • Cara pratinjau aplikasi ditampilkan (misalnya, perintah untuk menjalankan server web Anda).
  • Variabel lingkungan global tersedia untuk server lokal yang berjalan di ruang kerja Anda.

Lihat referensi dev.nix untuk mengetahui deskripsi lengkap tentang apa saja yang tersedia.

Nix dan IDX

IDX menggunakan Nix untuk menentukan konfigurasi lingkungan untuk setiap ruang kerja. Secara khusus, IDX menggunakan:

  • Bahasa pemrograman Nix untuk menjelaskan lingkungan ruang kerja. Nix adalah bahasa pemrograman fungsional. Atribut dan library paket yang dapat Anda tentukan dalam file dev.nix mengikuti sintaksis kumpulan atribut Nix.

  • Pengelola paket Nix untuk mengelola alat sistem yang tersedia bagi ruang kerja Anda. Hal ini mirip dengan pengelola paket khusus OS, seperti APT (apt dan apt-get), Homebrew (brew), dan dpkg.

Karena lingkungan Nix dapat direproduksi dan deklaratif, dalam konteks IDX, ini berarti Anda dapat membagikan file konfigurasi Nix sebagai bagian dari repositori Git untuk memastikan setiap orang yang mengerjakan project Anda memiliki konfigurasi lingkungan yang sama.

Contoh dasar

Contoh berikut menunjukkan konfigurasi lingkungan dasar yang mengaktifkan pratinjau:

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

Menambahkan alat sistem

Untuk menambahkan alat sistem ke ruang kerja Anda, seperti compiler atau program CLI untuk layanan cloud, temukan ID paket unik di registry paket Nix dan tambahkan ke objek packages dari file dev.nix Anda, yang diawali dengan `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
  ];
  ...
}

Ini berbeda dengan cara menginstal paket sistem pada umumnya menggunakan pengelola paket khusus OS seperti APT (apt dan apt-get), Homebrew (brew), dan dpkg. Dengan mendeskripsikan secara deklaratif dengan tepat paket sistem mana yang diperlukan, berarti ruang kerja IDX lebih mudah dibagikan dan direproduksi.

Menggunakan biner node lokal

Sama seperti di komputer lokal Anda, biner yang terkait dengan paket node yang diinstal secara lokal (yaitu paket yang ditentukan dalam package.json) dapat dijalankan di panel Terminal dengan memanggilnya menggunakan perintah npx.

Untuk memudahkan, jika Anda berada di direktori dengan folder node_modules (seperti direktori utama project web), biner yang diinstal secara lokal dapat dipanggil secara langsung, tanpa awalan npx.

Menambahkan komponen gcloud

Konfigurasi default CLI gcloud untuk Google Cloud tersedia untuk semua ruang kerja IDX.

Jika memerlukan komponen tambahan, Anda dapat menambahkannya ke file dev.nix seperti berikut:

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

Menambahkan ekstensi IDE

Anda dapat menginstal ekstensi di IDX menggunakan registry ekstensi OpenVSX dengan dua cara:

  • Dengan menggunakan panel Ekstensi di IDX untuk menemukan dan menginstal ekstensi. Pendekatan ini cocok untuk ekstensi khusus pengguna, seperti:

    • Tema warna kustom
  • Dengan menambahkan ekstensi ke file dev.nix Anda. Ekstensi ini akan otomatis diinstal saat Anda membagikan konfigurasi ruang kerja Anda. Pendekatan ini paling cocok untuk ekstensi khusus project, seperti:

    • Ekstensi bahasa pemrograman, termasuk debugger khusus bahasa
    • Ekstensi resmi untuk layanan cloud yang digunakan dalam project Anda
    • Pemformat kode

Untuk pendekatan yang terakhir, Anda dapat menyertakan ekstensi IDE dalam file dev.nix dengan menemukan ID ekstensi yang sepenuhnya memenuhi syarat (dengan format <publisher>.<id>) dan menambahkannya ke objek idx.extensions seperti berikut:

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

Menambahkan layanan umum

IDX juga menawarkan penyiapan dan konfigurasi yang disederhanakan untuk layanan umum yang mungkin Anda perlukan selama pengembangan, termasuk:

  • Penampung
    • Docker (services.docker.*)
  • Pesan
    • Emulator Pub/Sub (services.pubsub.*)
  • Database
    • MySQL (services.mysql.*)
    • Postgres (services.postgres.*)
    • Redis (services.redis.*)
    • Spanner (services.spanner.*)

Untuk mengetahui detail tentang cara mengaktifkan layanan ini di ruang kerja Anda, lihat bagian services.* dari referensi dev.nix.

Sesuaikan pratinjau

Untuk mengetahui detail tentang cara menyesuaikan pratinjau aplikasi, lihat dokumentasi untuk pratinjau.

Lihat semua opsi penyesuaian

Lihat referensi dev.nix untuk mengetahui deskripsi mendetail tentang skema konfigurasi lingkungan.