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

Project IDX की मदद से, अपने फ़ाइल फ़ोल्डर को अपने प्रोजेक्ट के हिसाब से ज़रूरत के मुताबिक बनाया जा सकता है. इसके लिए, एक .idx/dev.nix कॉन्फ़िगरेशन फ़ाइल तय की जाती है, जिसमें यह जानकारी होती है:

  • वे सिस्टम टूल जिन्हें चलाना आपके लिए ज़रूरी है (उदाहरण के लिए, टर्मिनल से), जैसे कि कंपाइलर या अन्य बाइनरी.
  • आपको जिन IDE एक्सटेंशन को इंस्टॉल करना है उन्हें इंस्टॉल करना होगा. उदाहरण के लिए, प्रोग्रामिंग भाषा की सुविधा.
  • आपके ऐप्लिकेशन की झलक कैसी दिखनी चाहिए (उदाहरण के लिए, वेब सर्वर चलाने के लिए निर्देश).
  • आपके फ़ाइल फ़ोल्डर में चल रहे लोकल सर्वर के लिए, ग्लोबल एनवायरमेंट वैरिएबल उपलब्ध हैं.

उपलब्ध सुविधाओं की पूरी जानकारी के लिए, dev.nix का रेफ़रंस देखें.

निक्स और IDX

हर वर्कस्पेस के लिए एनवायरमेंट कॉन्फ़िगरेशन तय करने के लिए, IDX Nix का इस्तेमाल करता है. IDX खास तौर पर इनका इस्तेमाल करता है:

  • Workspace के एनवायरमेंट के बारे में बताने के लिए, Nix की प्रोग्रामिंग भाषा. Nix एक फ़ंक्शनल प्रोग्रामिंग लैंग्वेज है. जिन एट्रिब्यूट और पैकेज लाइब्रेरी को dev.nix फ़ाइल में तय किया जा सकता है वे Nix एट्रिब्यूट सेट सिंटैक्स का पालन करते हैं.

  • Nix पैकेज मैनेजर: इसकी मदद से, अपने फ़ाइल फ़ोल्डर में उपलब्ध सिस्टम टूल मैनेज किए जा सकते हैं. यह ओएस के खास पैकेज मैनेजर की तरह है, जैसे कि APT (apt और apt-get), Homebrew (brew), और dpkg.

IDX के मामले में, Nix एनवायरमेंट दोबारा जनरेट किए जा सकते हैं और एलान किए जा सकते हैं. इसका मतलब है कि आपके पास अपनी 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";
      };
    };
  };
}

सिस्टम के टूल जोड़ें

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

लोकल नोड बाइनरी का इस्तेमाल करें

आपकी लोकल मशीन की तरह ही, लोकल डिवाइस पर इंस्टॉल किए गए नोड पैकेज (यानी कि आपके package.json में तय किए गए पैकेज) से जुड़ी बाइनरी को भी टर्मिनल पैनल में एक्ज़ीक्यूट किया जा सकता है. इसके लिए, उन्हें npx कमांड का इस्तेमाल करना होगा.

एक और सुविधा के तौर पर, अगर आप node_modules फ़ोल्डर वाली डायरेक्ट्री (जैसे कि किसी वेब प्रोजेक्ट की रूट डायरेक्ट्री) में हैं, तो डिवाइस पर इंस्टॉल की गई बाइनरी सीधे इस्तेमाल की जा सकती हैं. इसके लिए, npx प्रीफ़िक्स का इस्तेमाल नहीं करना होगा.

gcloud कॉम्पोनेंट जोड़ें

Google Cloud के लिए gcloud सीएलआई का डिफ़ॉल्ट कॉन्फ़िगरेशन, सभी IDX फ़ाइल फ़ोल्डर के लिए उपलब्ध है.

अगर आपको अतिरिक्त कॉम्पोनेंट की ज़रूरत है, तो उन्हें अपनी dev.nix फ़ाइल में इस तरह जोड़ें:

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

IDE एक्सटेंशन जोड़ें

OpenVSX एक्सटेंशन रजिस्ट्री का इस्तेमाल करके, दो तरीकों से IDX में एक्सटेंशन इंस्टॉल किए जा सकते हैं:

  • IDX में एक्सटेंशन पैनल का इस्तेमाल करके, एक्सटेंशन खोजे और इंस्टॉल किए जा सकते हैं. यह तरीका उपयोगकर्ता के हिसाब से बनाए गए एक्सटेंशन के लिए सबसे अच्छा है, जैसे:

    • पसंद के हिसाब से रंग वाली थीम
  • अपनी dev.nix फ़ाइल में एक्सटेंशन जोड़कर. Workspace का कॉन्फ़िगरेशन शेयर करने पर, ये एक्सटेंशन अपने-आप इंस्टॉल हो जाएंगे. यह तरीका प्रोजेक्ट से जुड़े एक्सटेंशन के लिए सबसे अच्छा है, जैसे कि:

    • प्रोग्रामिंग भाषा एक्सटेंशन, जिनमें भाषा के हिसाब से डीबगर शामिल हैं
    • आपके प्रोजेक्ट में इस्तेमाल की जाने वाली क्लाउड सेवाओं के लिए आधिकारिक एक्सटेंशन
    • कोड फ़ॉर्मैट करने वाले ऐप्लिकेशन

बाद वाले तरीके के लिए, आप पूरी तरह क्वालिफ़ाइड एक्सटेंशन आईडी (<publisher>.<id> फ़ॉर्म में) ढूंढकर और उसे idx.extensions ऑब्जेक्ट में इस तरह से जोड़कर, अपनी dev.nix फ़ाइल में IDE एक्सटेंशन शामिल कर सकते हैं:

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

सामान्य सेवाएं जोड़ें

IDX में ऐसी सामान्य सेवाओं के लिए आसान सेटअप और कॉन्फ़िगरेशन भी मिलता है जिनकी ज़रूरत आपको डेवलपमेंट के दौरान पड़ सकती है. इनमें ये शामिल हैं:

  • कंटेनर
    • डॉकर (services.docker.*)
  • मैसेज सेवा
    • Pub/Sub एम्युलेटर (services.pubsub.*)
  • डेटाबेस
    • MySQL (services.mysql.*)
    • पोस्टग्रेस (services.postgres.*)
    • रेडिस (services.redis.*)
    • स्पैनर (services.spanner.*)

अपने फ़ाइल फ़ोल्डर में इन सेवाओं को चालू करने के बारे में जानने के लिए, dev.nix रेफ़रंस के services.* वाले हिस्से देखें.

झलकों को पसंद के मुताबिक बनाना

ऐप्लिकेशन की झलक को अपनी पसंद के मुताबिक बनाने का तरीका जानने के लिए, झलक दिखाने से जुड़े दस्तावेज़ देखें.

पसंद के मुताबिक बनाने के सभी विकल्प देखें

एनवायरमेंट कॉन्फ़िगरेशन स्कीमा के बारे में ज़्यादा जानकारी पाने के लिए, dev.nix रेफ़रंस देखें.