कस्टम टेंप्लेट बनाना

IDX में पहले से मौजूद कई तरह की सुविधाएं मिलती हैं टेंप्लेट जिनमें सभी फ़ाइलें और सिस्टम शामिल होते हैं पैकेज (जैसे, कंपाइलर) और एक्सटेंशन होते हैं, जिन्हें उपयोगकर्ता हमें कोई भाषा या फ़्रेमवर्क शुरू करने की ज़रूरत है.

आप अपने खुद के ऐसे टेंप्लेट भी बना सकते हैं जिन्हें उपयोगकर्ता कॉन्फ़िगर कर सकते हैं. उदाहरण के लिए:

  • अगर आपको अपना फ़्रेमवर्क, लाइब्रेरी या सेवा बनाना है, तो इससे उपयोगकर्ता आपकी टेक्नोलॉजी का इस्तेमाल तुरंत शुरू कर सकते हैं. इसके लिए ज़रूरी है कि वे ब्राउज़र से बाहर निकलकर, क्लाउड-आधारित वर्चुअल मशीन की पूरी क्षमता के साथ काम करते हैं.

  • अगर आपके पास अपने प्रोजेक्ट के लिए कोई पसंदीदा टेक्नोलॉजी स्टैक है, तो कस्टम टेंप्लेट की मदद से नए प्रोजेक्ट शुरू करने की प्रोसेस को आसान बनाएं.

  • अगर कोडलैब की मदद से दूसरों को पढ़ा जा रहा है, तो में सेट अप करने के लिए, पॉइंट को कस्टम टेंप्लेट के तौर पर सेट करें.

जब आपका कस्टम टेंप्लेट तैयार हो जाए, तो इसके लिए लिंक बनाया जा सकता है अपनी वेबसाइट पर रखने के लिए इसे, Git रिपॉज़िटरी README फ़ाइल, पैकेज की जानकारी वाले पेज (जैसे कि NPM में) या अन्य जगहों से, उपयोगकर्ता हासिल कर सकते हैं आपको टेक्नोलॉजी का इस्तेमाल शुरू करना है.

ज़रूरी शर्तें

शुरू करने से पहले, पक्का करें कि आपको अपने .idx/dev.nix फ़ाइलों के साथ वातावरण.

टेंप्लेट में Nix भाषा का भी इस्तेमाल किया गया है, ताकि आप कुछ बुनियादी बातों को समझ सकें या संदर्भ.

टेंप्लेट फ़ाइल का स्ट्रक्चर

टेंप्लेट, GitHub का सार्वजनिक डेटा स्टोर करने की जगह (या रिपॉज़िटरी में फ़ोल्डर या ब्रांच) होता है जिसमें कम से कम दो फ़ाइलें हों:

  • आपके टेंप्लेट से नया फ़ाइल फ़ोल्डर बनाने पर, उपयोगकर्ताओं को दिखने वाला डायलॉग
    कस्टम टेंप्लेट से नया फ़ाइल फ़ोल्डर बनाना

    idx-template.json में टेंप्लेट का मेटाडेटा शामिल होता है. इसमें यह जानकारी भी शामिल होती है उपयोगकर्ता को दिखने वाला नाम, ब्यौरा, और पैरामीटर टेंप्लेट कॉन्फ़िगर करें. उदाहरण के लिए, आप उपयोगकर्ताओं को या उनके इस्तेमाल के उदाहरण. IDX का इस्तेमाल यह जानकारी, उस यूज़र इंटरफ़ेस (यूआई) को तैयार करने के लिए है जो उपयोगकर्ताओं को तब दिखता है, जब वे कॉन्टेंट बनाने का विकल्प चुनते हैं नया फ़ाइल फ़ोल्डर बनाया जा सकता है.

  • idx-template.nix एक फ़ाइल है, जिसे Nix ऐसी भाषा जिसमें बैश शेल शामिल है स्क्रिप्ट (निक्स फ़ंक्शन में रैप की गई) इनके लिए ज़िम्मेदार है:

    1. नए फ़ाइल फ़ोल्डर की काम करने वाली डायरेक्ट्री बनाना और
    2. .idx/dev.nix फ़ाइल बनाकर, इसका एनवायरमेंट सेट अप किया जा रहा है. ध्यान दें कि आपके पास प्रोजेक्ट स्कैफ़ोल्डिंग टूल चलाने का विकल्प भी है. जैसे, flutter create या इस स्क्रिप्ट में npm init डालें या Go, Python, Node.js या कोई दूसरी भाषा.

    इस फ़ाइल को उपयोगकर्ता के बताए गए पैरामीटर के साथ लागू किया जाएगा जब उन्होंने टेंप्लेट को कॉन्फ़िगर किया था.

इन दो फ़ाइलों के साथ अन्य फ़ाइलें भी शामिल की जा सकती हैं, ताकि टेंप्लेट को इंस्टैंशिएट करने के लिए, idx-template.nix. उदाहरण के लिए, आपके पास ये विकल्प हैं आखिरी .idx/dev.nix फ़ाइल शामिल करें या सभी स्कैफ़ोल्डिंग को भी शामिल करें फ़ाइलें सीधे रिपॉज़िटरी में मौजूद होनी चाहिए.

बुनियादी उदाहरण: GitHub की सार्वजनिक रिपॉज़िटरी को टेंप्लेट में बदलना

अपने idx-template.json को तय करने का तरीका जानने से पहले और idx-template.nix, सामान्य उदाहरण के तौर पर यह देखना फ़ायदेमंद होगा कि:

  • इसमें उपयोगकर्ता द्वारा कॉन्फ़िगर किया जा सकने वाला कोई पैरामीटर नहीं है
  • बस अपनी टेंप्लेट रिपॉज़िटरी में सभी फ़ाइलें कॉपी करें (दो फ़ाइलों को छोड़कर idx-template फ़ाइलें) उपयोगकर्ता के फ़ाइल फ़ोल्डर में भेजी जाएंगी. पहले से ही एक .idx सब-फ़ोल्डर, जिसमें एनवायरमेंट की जानकारी देने वाली dev.nix फ़ाइल है.

नीचे दी गई फ़ाइलों को किसी भी सार्वजनिक GitHub रिपॉज़िटरी (या सब-फ़ोल्डर या ब्रांच) उस रिपॉज़िटरी को IDX टेंप्लेट में बदल देती है.

idx-template.json

{
  "name": "Hello world",
  "description": "A template for a CLI program that prints 'hello world'",
  "icon": "https://www.gstatic.com/images/branding/productlogos/idx/v1/192px.svg",
  "params": []
}

idx-template.nix

# No user-configurable parameters
{ pkgs, ... }: {
  # Shell script that produces the final environment
  bootstrap = ''
    # Copy the folder containing the `idx-template` files to the final
    # project folder for the new workspace. ${./.} inserts the directory
    # of the checked-out Git folder containing this template.
    cp -rf ${./.} "$out"

    # Set some permissions
    chmod -R +w "$out"

    # Remove the template files themselves and any connection to the template's
    # Git repository
    rm -rf "$out/.git" "$out/idx-template".{nix,json}
  '';
}

अपनी bootstrap स्क्रिप्ट में अतिरिक्त सिस्टम पैकेज का इस्तेमाल करें

पिछले उदाहरण में फ़ाइलों को दाईं ओर कॉपी करने के लिए, सिर्फ़ बुनियादी POSIX कमांड का इस्तेमाल किया गया है जगह. आपके टेंप्लेट की bootstrap स्क्रिप्ट को इंस्टॉल किए गए ऐप्लिकेशन, जैसे कि git, node, python3 या अन्य.

आप इसके ज़रिए अपनी बूटस्ट्रैप स्क्रिप्ट में अतिरिक्त सिस्टम पैकेज उपलब्ध करा सकते हैं ठीक उसी तरह, जैसे आप अपनी idx-template.nix फ़ाइल में packages दर्ज करते हैं अतिरिक्त सिस्टम पैकेज की मदद से वर्कस्पेस को पसंद के मुताबिक बनाएं ऐसा करने के लिए, packages को उसकी dev.nix फ़ाइल में जोड़ें.

यहां pkgs.nodejs जोड़ने का एक उदाहरण दिया गया है, जिसमें node जैसी बाइनरी शामिल हैं, npx और npm:

# idx-template.nix
{pkgs}: {
  packages = [
    # Enable "node", "npm" and "npx" in the bootstrap script below.
    # Note, this is NOT the list of packages available to the workspace once
    # it's created. Those go in .idx/dev.nix
    pkgs.nodejs
  ];

  bootstrap = ''
    mkdir "$out"
    # We can now use "npm"
    npm init --yes my-boot-strap@latest "$out"
  ''
}

उपयोगकर्ता को कॉन्फ़िगर किए जा सकने वाले पैरामीटर जोड़ें

उपयोगकर्ताओं को उनके नए प्रोजेक्ट के लिए, शुरुआत की जगह को अपनी ज़रूरत के हिसाब से बनाने की अनुमति देने के लिए, या तो कई टेंप्लेट बनाएं या पैरामीटर वाला एक टेंप्लेट बनाएं. अगर आपके अलग-अलग शुरुआती पॉइंट अलग-अलग हैं, तो यह एक बेहतरीन विकल्प है किसी सीएलआई टूल को भेजी गई वैल्यू (उदाहरण के लिए, --language=js बनाम --language=ts).

पैरामीटर जोड़ने के लिए, आपको:

  1. अपने idx-template.json के params ऑब्जेक्ट में अपने पैरामीटर की जानकारी दें मेटाडेटा फ़ाइल में दिया गया है. IDX, यूज़र इंटरफ़ेस (यूआई) को तैयार करने के लिए, इस फ़ाइल में मौजूद जानकारी का इस्तेमाल करता है (जैसे चेकबॉक्स, ड्रॉप-डाउन और टेक्स्ट फ़ील्ड) आपके टेम्प्लेट.
  2. उपयोगकर्ता की चुनी गई वैल्यू इस्तेमाल करने के लिए, idx-template.nix बूटस्ट्रैप को अपडेट करें टेंप्लेट को इंस्टैंशिएट करते समय.

idx-template.json में अपने पैरामीटर की जानकारी दें

यहां enum पैरामीटर जोड़ने का एक उदाहरण दिया गया है, जो IDX में से किसी एक के तौर पर दिखता है जिसमें विकल्पों की संख्या के आधार पर, ड्रॉप-डाउन मेन्यू या रेडियो बटन ग्रुप शामिल होता है.:

{
  "name": "Hello world",
  "description": "A hello world app",
  "params": [
    {
      "id": "language",
      "name": "Programming Language",
      "type": "enum",
      "default": "ts",
      "options": {
        "js": "JavaScript",
        "ts": "TypeScript"
      },
      "required": true
    }
  ]
}

चूंकि इसमें दो मान होते हैं (JavaScript और TypeScript), इसलिए यूज़र इंटरफ़ेस (यूआई) दो विकल्पों के लिए रेडियो बटन समूह चुनें और फिर मान ts या js idx-template.nix स्क्रिप्ट.

हर पैरामीटर ऑब्जेक्ट में ये प्रॉपर्टी होती हैं:

प्रॉपर्टी वाई-फ़ाई के टाइप के बारे में जानकारी जानकारी
आईडी string पैरामीटर का यूनीक आईडी, वैरिएबल के नाम से मिलता-जुलता.
नाम string इस पैरामीटर का डिसप्ले नेम.
टाइप string

इस पैरामीटर के लिए इस्तेमाल किए जाने वाले यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट के बारे में बताता है. साथ ही, बूटस्ट्रैप स्क्रिप्ट को पास करने के लिए डेटा टाइप के बारे में बताता है. मान्य मान हैं:

  • "enum" - यह एक ड्रॉप-डाउन या रेडियो बटन ग्रुप दिखाता है और बूटस्ट्रैप में string को पास करता है
  • "boolean" - चेकबॉक्स दिखाता है और true या false को पास करता है
  • "text" - टेक्स्ट फ़ील्ड दिखाता है और string पास करता है
विकल्प object enum पैरामीटर के लिए, यह उपयोगकर्ताओं को दिखाने के विकल्प दिखाता है. उदाहरण के लिए, अगर विकल्प {"js": "JavaScript", ...}, "JavaScript" है को विकल्प के तौर पर दिखाया जाएगा और इस पैरामीटर के लिए वैल्यू js होगी.
डिफ़ॉल्ट string या boolean यूज़र इंटरफ़ेस (यूआई) में शुरुआती वैल्यू सेट करता है. enum पैरामीटर के लिए, यह options की कुंजियों में से एक होनी चाहिए. boolean पैरामीटर के लिए, यह true या false होना चाहिए.
ज़रूरी है boolean इससे पता चलता है कि यह पैरामीटर ज़रूरी है.

idx-template.nix में पैरामीटर वैल्यू का इस्तेमाल करें

अपनी idx-template.json फ़ाइल में params ऑब्जेक्ट के बारे में बताने के बाद, ये काम किए जा सकते हैं उपयोगकर्ता की पैरामीटर वैल्यू के आधार पर, बूटस्ट्रैप स्क्रिप्ट को पसंद के मुताबिक बनाना शुरू करें चुनता है.

अगर पिछले सेक्शन में दिए गए उदाहरण की मदद से, आपके पास एक ही पैरामीटर है, आईडी language के साथ, जो संभावित मान ts या js वाली एक सूची है, आप इसका इस्तेमाल कर सकते हैं पसंद है:

# idx-template.nix
# Accept additional arguments to this template corresponding to template
# parameter IDs, including default values (language=ts by default in this example).
{ pkgs, language ? "ts", ... }: {
  packages = [
    pkgs.nodejs
  ];

  bootstrap = ''
    # We use Nix string interpolation to pass the user's chosen programming
    # language to our script.
    npm init --yes my-boot-strap@latest "$out" -- --lang=${language}
  ''
}

एक और सामान्य पैटर्न, शर्तों के हिसाब से कॉन्टेंट को शामिल करना है. यह और तय करें. पिछला उदाहरण लिखने का एक और तरीका यह है:

npm init --yes my-boot-strap@latest "$out" -- \
    ${if language == "ts" then "--lang=ts" else "--lang=js" }

चुनें कि डिफ़ॉल्ट रूप से कौनसी फ़ाइलें खुलनी चाहिए

यह कस्टमाइज़ करना एक अच्छा उपाय है कि नई फ़ाइलें संपादित करने के लिए कौन-सी फ़ाइलें खोलनी चाहिए फ़ाइल फ़ोल्डर आपके टेंप्लेट का इस्तेमाल करके बनाए जाते हैं. उदाहरण के लिए, अगर आपका टेंप्लेट कोई बेसिक वेबसाइट है, तो हो सकता है कि आप मुख्य एचटीएमएल, JavaScript, और सीएसएस फ़ाइलें खोलना चाहें.

यह तय करने के लिए कि डिफ़ॉल्ट रूप से कौनसी फ़ाइलें खुलनी चाहिए, अपनी .idx/dev.nix फ़ाइल अपडेट करें (आपकी idx-template.nix फ़ाइल नहीं!) में फ़ाइल फ़ोल्डर का onCreate हुक शामिल करें! openFiles एट्रिब्यूट का इस्तेमाल करते हैं, जैसे:

# .idx/dev.nix
{pkgs}: {
  ...
  idx = {
    # Workspace lifecycle hooks
    workspace = {
      # Runs when a workspace is first created with this `dev.nix` file
      onCreate = {
        # Open editors for the following files by default, if they exist.
        # The last file in the list will be focused.
        default.openFiles = [
          "src/index.css"
          "src/index.js"
          "src/index.html"
        ];
        # Include other scripts here, as needed, for example:
        # installDependencies = "npm install";
      };
      # To run something each time the workspace is (re)started, use the `onStart` hook
    };
    # Enable previews and customize configuration
    previews = { ... };
  };
}

फ़ाइल फ़ोल्डर का डिफ़ॉल्ट आइकॉन चुनें

टेंप्लेट की मदद से बनाए गए फ़ाइल फ़ोल्डर के लिए, डिफ़ॉल्ट आइकॉन चुना जा सकता है. icon.png नाम की एक PNG फ़ाइल को dev.nix फ़ाइल के बगल में रखकर, .idx डायरेक्ट्री.

अपने टेंप्लेट से नया फ़ाइल फ़ोल्डर बनाएं

अपने टेंप्लेट को शुरू से आखिर तक टेस्ट करने का सबसे आसान तरीका, एक नया फ़ाइल फ़ोल्डर बनाना है उसके साथ. अपने टेम्प्लेट के उदाहरण को GitHub रिपॉज़िटरी का यूआरएल:

https://idx.google.com/new?template=https://github.com/my-org/my-repo

आपके पास ब्रांच और सब-फ़ोल्डर को शामिल करने का विकल्प भी होता है. निम्न सभी हैं मान्य होना चाहिए, जब तक कि वे सार्वजनिक रूप से उपलब्ध हों:

  • https://github.com/my-org/my-repo/
  • https://github.com/my-org/my-repo/tree/main/path/to/myidxtemplate
  • https://github.com/my-org/my-repo/tree/branch
  • https://github.com/my-org/my-repo/tree/branch/path/to/myidxtemplate

यह वही URL है जिसे आप अन्य लोगों के साथ शेयर करेंगे, ताकि वे आपके नए टेंप्लेट या वह यूआरएल जिसे "IDX में खोलें" से लिंक किया जाएगा बटन पर क्लिक करें.


अपना टेंप्लेट शेयर करें

जब आप पुष्टि कर लें कि आपका टेंप्लेट उम्मीद के मुताबिक काम कर रहा है, तब उसे GitHub रिपॉज़िटरी में सेव करें और वही लिंक शेयर करें जिसका इस्तेमाल आपने फ़ाइल फ़ोल्डर बनाते समय किया था टेस्ट करें.

साथ ही, उपयोगकर्ता आपके टेंप्लेट को आसानी से ढूंढ सकें, इसके लिए "इसमें खोलें IDX" बटन को अपनी वेबसाइट या डेटा स्टोर करने की जगह README पर ले जाएं.