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