अपना IDX फ़ाइल फ़ोल्डर पसंद के मुताबिक बनाएं

Project IDX का मकसद, डेवलपर के लिए ज़्यादा से ज़्यादा मदद करना है. इसके लिए, IDX की मदद से डेवलपर को यह आज़ादी और सुविधा मिलती है कि वे किसी भी प्रोजेक्ट के लिए सही टूल इंस्टॉल कर सकते हैं. साथ ही, सेटिंग को अपनी पसंद के मुताबिक बना सकते हैं, ताकि उनके फ़ाइल फ़ोल्डर काम करें.

Nix + IDX

IDX, हर वर्कस्पेस का एनवायरमेंट कॉन्फ़िगरेशन तय करने के लिए, Nix का इस्तेमाल करता है. Nix पूरी तरह से काम करने वाला पैकेज मैनेजर है और यह हर डिपेंडेंसी के लिए यूनीक आइडेंटिफ़ायर असाइन करता है. इसका मतलब है कि आपके एनवायरमेंट में, आसानी से एक ही डिपेंडेंसी के कई वर्शन हो सकते हैं. इसे फिर से बनाया जा सकता है और एलान भी किया जा सकता है. 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 या unstable.

टाइप: पैकेज की सूची

डिफ़ॉल्ट: [ ]

चैनल

nixpkgs चैनल का इस्तेमाल करने के लिए.

यह चैनल, pkgs आर्ग्युमेंट के कॉन्टेंट के बारे में बताता है.

टाइप: “stable-23.05”, “stable-23.11”, “unstable” में से एक

डिफ़ॉल्ट: "stable-23.11"

env

ऐसे एनवायरमेंट वैरिएबल जो डेवलपर एनवायरमेंट में सेट होते हैं.

ये आपके सभी शेल और प्रीव्यू सर्वर पर लागू होते हैं. अगर आपके ऐप्लिकेशन को वैरिएबल के एक खास सेट की ज़रूरत होती है, तो एनवायरमेंट वैरिएबल काफ़ी काम के हो सकते हैं.

उदाहरण:

{pkgs, ...}: {
  env = {
    HELLO = "world";
  };
}

Type: किसी भी चीज़ का एट्रिब्यूट सेट

डिफ़ॉल्ट: { }

idx.extensions

वे कोड एक्सटेंशन जिन्हें आपको अपने IDX फ़ाइल फ़ोल्डर में इंस्टॉल करना है.

यह पूरी तरह क्वालिफ़ाइड एक्सटेंशन आईडी की सूची है, जैसे कि ${publisherId}.${extensionId}.

आपको VSX Registry खोलें पर उपलब्ध एक्सटेंशन की सूची मिल जाएगी और इन्हें ${publisherId}.${extensionId} तक अपनी dev.nix फ़ाइल में डालें.

टाइप: (गैर-खाली स्ट्रिंग या पाथ) की सूची

डिफ़ॉल्ट: [ ]

idx.previews.enable

IDX की झलक देखने की सुविधा चालू करने के लिए, इसे true पर सेट करें.

इस सुविधा की मदद से, ऐप्लिकेशन डेवलप किए जाने के साथ-साथ, अपने-आप उन्हें चलाया और फिर से लोड किया जा सकता है.

टाइप: बूलियन

डिफ़ॉल्ट: 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

वर्किंग डायरेक्ट्री

Type: स्ट्रिंग

डिफ़ॉल्ट: ""

idx.previews.previews.*.env

सेट किए जाने वाले एनवायरमेंट वैरिएबल.

Type: स्ट्रिंग का सेट एट्रिब्यूट

डिफ़ॉल्ट: { }

idx.previews.previews.*.manager

मैनेजर

टाइप: web, flutter में से एक

idx.workspace.onCreate

फ़ाइल फ़ोल्डर को पहली बार बनाए और खोले जाने पर लागू किए जाने वाले निर्देश.

इससे डेवलपमेंट एनवायरमेंट को सेट अप करने में मदद मिल सकती है. उदाहरण के लिए, यहां हम npm install को चलाने के बारे में बता रहे हैं:

{pkgs, ...}: {
  idx.workspace.onCreate = {
    npm-install = "npm install";
  };
}

Type: एट्रिब्यूट का सेट (पाथ या स्ट्रिंग)

डिफ़ॉल्ट: { }

idx.workspace.onStart

फ़ाइल फ़ोल्डर खोले जाने पर, एक्ज़ीक्यूट होने वाले निर्देश.

इससे दर्शकों की संख्या बढ़ाने में मदद मिल सकती है. उदाहरण के लिए, यहां हम चलाने के लिए दो निर्देश बता रहे हैं:

{pkgs, ...}: {
  idx.workspace.onStart = {
    npm-watch-fe = "npm run watch:frontend";
    npm-watch-be = "npm run watch:backend";
  };
}

Type: एट्रिब्यूट का सेट (पाथ या स्ट्रिंग)

डिफ़ॉल्ट: { }

services.docker.enable

रूटलेस डॉकर को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true