अपना 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.<name>.command

एक्ज़ीक्यूट करने के लिए निर्देश

टाइप: स्ट्रिंग की सूची

डिफ़ॉल्ट: [ ]

idx.previews.previews.<name>.cwd

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

टाइप: स्ट्रिंग

डिफ़ॉल्ट: ""

idx.previews.previews.<name>.env

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

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

डिफ़ॉल्ट: { }

idx.previews.previews.<name>.manager

मैनेजर

टाइप: "वेब", "फ़्लटर" में से कोई एक

idx.workspace.onCreate

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

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

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

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

डिफ़ॉल्ट: { }

idx.workspace.onStart

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

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

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

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

डिफ़ॉल्ट: { }

services.docker.enable

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

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.mysql.enable

MySQL सर्वर को चालू करना है या नहीं.

सर्वर को बिना पासवर्ड वाले उपयोगकर्ता रूट से शुरू किया गया है. इसलिए, अतिरिक्त उपयोगकर्ता बनाने और डेटाबेस बनाने के लिए, mysql -u root का इस्तेमाल करें. .

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.mysql.package

इस्तेमाल करने के लिए MySQL पैकेज.

टाइप: पैकेज

डिफ़ॉल्ट: pkgs.mysql

उदाहरण: pkgs.mysql80

services.postgres.enable

PostgreSQL सर्वर को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.postgres.package

इस्तेमाल करने के लिए PostgreSQL पैकेज.

टाइप: पैकेज

डिफ़ॉल्ट: pkgs.postgresql

उदाहरण: pkgs.postgresql_15

services.postgres.extensions

इंस्टॉल करने के लिए एक्सटेंशन पोस्ट करें.

"टाइप: "one of "age", "apache_datasketches,"sa पेशेवर सभी व्यक्ति

डिफ़ॉल्ट: [ ]

उदाहरण: [ "pgvector" "postgis" ];

services.pubsub.enable

क्या Google Pub/Sub एम्युलेटर को चालू करना है.

एम्युलेटर का इस्तेमाल करने से जुड़े ज़्यादा दस्तावेज़ यहां देखे जा सकते हैं: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.pubsub.port

यह नीति कॉन्फ़िगर करती है कि पोर्ट Pub/Sub चालू होगा.

टाइप: बिना हस्ताक्षर वाला 16 बिट का पूर्णांक; 0 और 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 8085

services.pubsub.project-id

Pub/Sub एम्युलेटर को चलाने के लिए इस्तेमाल किया जाने वाला प्रोजेक्ट आईडी. यह प्रोजेक्ट सिर्फ़ टेस्टिंग के लिए है. ज़रूरी नहीं है और इसका इस्तेमाल सिर्फ़ स्थानीय तौर पर किया जा सकता है.

टाइप: [a-z][a-z0-9-]{5,29} पैटर्न से मेल खाने वाली स्ट्रिंग

डिफ़ॉल्ट: "idx-pubsub-emulator"

services.redis.enable

Redis सर्वर को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.redis.port

यह नीति कॉन्फ़िगर करती है कि पोर्ट Redis चालू रहेगा.

डिफ़ॉल्ट रूप से, टीसीपी की सुविधा बंद होती है और फिर से डिफ़ॉल्ट रूप से यह विकल्प, /tmp/redis/redis.sock पर ही काम करता है.

टाइप: बिना हस्ताक्षर वाला 16 बिट का पूर्णांक; 0 और 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 0

services.spanner.enable

Google Cloud Spanner Emulator को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.spanner.fault-injection

क्या ट्रांसमिशन में रैंडम फ़ॉल्ट इंजेक्शन को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.spanner.grpc-port

वह टीसीपी पोर्ट जिससे एम्युलेटर को बाउंड होना चाहिए.

टाइप: बिना हस्ताक्षर वाला 16 बिट का पूर्णांक; 0 और 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 9010

services.spanner.rest-port

वह पोर्ट जिस पर REST के अनुरोध किए जाते हैं

टाइप: बिना हस्ताक्षर वाला 16 बिट का पूर्णांक; 0 और 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 9020