हिन्दी
दस्तावेज़
फॉर्मेटर

फॉर्मेटर

OpenCode भाषा-विशिष्ट फॉर्मेटर का उपयोग करता है।

OpenCode फ़ाइलों के लिखे या संपादित होने के बाद भाषा-विशिष्ट फॉर्मेटर का उपयोग करके उन्हें फॉर्मेट कर सकता है। फॉर्मेटर डिफ़ॉल्ट रूप से अक्षम होते हैं; OpenCode द्वारा उन्हें चलाने से पहले अपनी कॉन्फ़िग में उन्हें सक्षम करें।


बिल्ट-इन

OpenCode लोकप्रिय भाषाओं और फ्रेमवर्क के लिए कई बिल्ट-इन फॉर्मेटर के साथ आता है। नीचे फॉर्मेटर, समर्थित फ़ाइल एक्सटेंशन, और इसके लिए आवश्यक कमांड या कॉन्फ़िग विकल्पों की सूची दी गई है।

फॉर्मेटरएक्सटेंशनआवश्यकताएँ
air.Rair कमांड उपलब्ध
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, और more (opens in a new tab)biome.json(c) कॉन्फ़िग फ़ाइल
cargofmt.rscargo fmt कमांड उपलब्ध
clang-format.c, .cpp, .h, .hpp, .ino, और more (opens in a new tab).clang-format कॉन्फ़िग फ़ाइल
cljfmt.clj, .cljs, .cljc, .edncljfmt कमांड उपलब्ध
dart.dartdart कमांड उपलब्ध
dfmt.ddfmt कमांड उपलब्ध
gleam.gleamgleam कमांड उपलब्ध
gofmt.gogofmt कमांड उपलब्ध
htmlbeautifier.erb, .html.erbhtmlbeautifier कमांड उपलब्ध
ktlint.kt, .ktsktlint कमांड उपलब्ध
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfacemix कमांड उपलब्ध
nixfmt.nixnixfmt कमांड उपलब्ध
ocamlformat.ml, .mliocamlformat कमांड उपलब्ध और .ocamlformat कॉन्फ़िग फ़ाइल
ormolu.hsormolu कमांड उपलब्ध
oxfmt (प्रायोगिक).js, .jsx, .ts, .tsxpackage.json में oxfmt निर्भरता और एक experimental env variable flag
pint.phpcomposer.json में laravel/pint निर्भरता
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, और more (opens in a new tab)package.json में prettier निर्भरता
rubocop.rb, .rake, .gemspec, .rurubocop कमांड उपलब्ध
ruff.py, .pyiकॉन्फ़िग के साथ ruff कमांड उपलब्ध
rustfmt.rsrustfmt कमांड उपलब्ध
shfmt.sh, .bashshfmt कमांड उपलब्ध
standardrb.rb, .rake, .gemspec, .rustandardrb कमांड उपलब्ध
terraform.tf, .tfvarsterraform कमांड उपलब्ध
uv.py, .pyiuv कमांड उपलब्ध
zig.zig, .zonzig कमांड उपलब्ध

जब फॉर्मेटर सक्षम होते हैं, तो OpenCode मिलान खाने वाली फ़ाइलों के लिए prettier का उपयोग करेगा यदि आपके प्रोजेक्ट के package.json में prettier है।


यह कैसे काम करता है

जब OpenCode किसी फ़ाइल को लिखता या संपादित करता है और फॉर्मेटर सक्षम होते हैं, तो यह:

  1. फ़ाइल एक्सटेंशन की जाँच सभी सक्षम फॉर्मेटर के विरुद्ध करता है।
  2. फ़ाइल पर उपयुक्त फॉर्मेटर कमांड चलाता है।
  3. फॉर्मेटिंग परिवर्तन लागू करता है।

यह प्रक्रिया सक्षम फॉर्मेटर के लिए पृष्ठभूमि में होती है।


कॉन्फ़िगर करें

आप अपनी OpenCode कॉन्फ़िग में formatter अनुभाग के माध्यम से फॉर्मेटर को सक्षम और कस्टमाइज़ कर सकते हैं।

सभी बिल्ट-इन फॉर्मेटर को सक्षम करने के लिए, formatter को true पर सेट करें।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": true
}

ओवरराइड या कस्टम फॉर्मेटर कॉन्फ़िगर करते समय बिल्ट-इन को सक्षम रखने के लिए एक ऑब्जेक्ट का उपयोग करें।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": {}
}

प्रत्येक फॉर्मेटर कॉन्फ़िगरेशन निम्नलिखित को सपोर्ट करता है:

गुणप्रकारविवरण
disabledbooleanफॉर्मेटर को अक्षम करने के लिए इसे true पर सेट करें
commandstring[]फॉर्मेटिंग के लिए चलाई जाने वाली कमांड। कस्टम फॉर्मेटर के लिए आवश्यक; बिल्ट-इन के लिए वैकल्पिक।
environmentobjectफॉर्मेटर चलाते समय सेट किए जाने वाले एनवायरनमेंट वेरिएबल
extensionsstring[]फ़ाइल एक्सटेंशन जिन्हें यह फॉर्मेटर संभालना चाहिए

आइए कुछ उदाहरण देखें।


फॉर्मेटर अक्षम करना

यदि formatter छोड़ दिया जाता है, तो सभी फॉर्मेटर अक्षम होते हैं। किसी अन्य कॉन्फ़िग द्वारा उन्हें सक्षम करने के बाद सभी फॉर्मेटर को अक्षम करने के लिए, formatter को false पर सेट करें:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": false
}

किसी विशिष्ट फॉर्मेटर को अक्षम करने के लिए, disabled को true पर सेट करें:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": {
    "prettier": {
      "disabled": true
    }
  }
}

कस्टम फॉर्मेटर

आप बिल्ट-इन फॉर्मेटर को environment या extensions जैसे विकल्पों के साथ कॉन्फ़िगर कर सकते हैं। एक कस्टम फॉर्मेटर जोड़ने के लिए, एक command और extensions निर्दिष्ट करें:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": {
    "prettier": {
      "command": ["npx", "prettier", "--write", "$FILE"],
      "environment": {
        "NODE_ENV": "development"
      },
      "extensions": [".js", ".ts", ".jsx", ".tsx"]
    },
    "custom-markdown-formatter": {
      "command": ["deno", "fmt", "$FILE"],
      "extensions": [".md"]
    }
  }
}

कमांड में $FILE प्लेसहोल्डर को फॉर्मेट की जा रही फ़ाइल के पथ से बदल दिया जाएगा।