फॉर्मेटर
OpenCode भाषा-विशिष्ट फॉर्मेटर का उपयोग करता है।
OpenCode फ़ाइलों के लिखे या संपादित होने के बाद भाषा-विशिष्ट फॉर्मेटर का उपयोग करके उन्हें फॉर्मेट कर सकता है। फॉर्मेटर डिफ़ॉल्ट रूप से अक्षम होते हैं; OpenCode द्वारा उन्हें चलाने से पहले अपनी कॉन्फ़िग में उन्हें सक्षम करें।
बिल्ट-इन
OpenCode लोकप्रिय भाषाओं और फ्रेमवर्क के लिए कई बिल्ट-इन फॉर्मेटर के साथ आता है। नीचे फॉर्मेटर, समर्थित फ़ाइल एक्सटेंशन, और इसके लिए आवश्यक कमांड या कॉन्फ़िग विकल्पों की सूची दी गई है।
| फॉर्मेटर | एक्सटेंशन | आवश्यकताएँ |
|---|---|---|
| air | .R | air कमांड उपलब्ध |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, और more (opens in a new tab) | biome.json(c) कॉन्फ़िग फ़ाइल |
| cargofmt | .rs | cargo fmt कमांड उपलब्ध |
| clang-format | .c, .cpp, .h, .hpp, .ino, और more (opens in a new tab) | .clang-format कॉन्फ़िग फ़ाइल |
| cljfmt | .clj, .cljs, .cljc, .edn | cljfmt कमांड उपलब्ध |
| dart | .dart | dart कमांड उपलब्ध |
| dfmt | .d | dfmt कमांड उपलब्ध |
| gleam | .gleam | gleam कमांड उपलब्ध |
| gofmt | .go | gofmt कमांड उपलब्ध |
| htmlbeautifier | .erb, .html.erb | htmlbeautifier कमांड उपलब्ध |
| ktlint | .kt, .kts | ktlint कमांड उपलब्ध |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | mix कमांड उपलब्ध |
| nixfmt | .nix | nixfmt कमांड उपलब्ध |
| ocamlformat | .ml, .mli | ocamlformat कमांड उपलब्ध और .ocamlformat कॉन्फ़िग फ़ाइल |
| ormolu | .hs | ormolu कमांड उपलब्ध |
| oxfmt (प्रायोगिक) | .js, .jsx, .ts, .tsx | package.json में oxfmt निर्भरता और एक experimental env variable flag |
| pint | .php | composer.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, .ru | rubocop कमांड उपलब्ध |
| ruff | .py, .pyi | कॉन्फ़िग के साथ ruff कमांड उपलब्ध |
| rustfmt | .rs | rustfmt कमांड उपलब्ध |
| shfmt | .sh, .bash | shfmt कमांड उपलब्ध |
| standardrb | .rb, .rake, .gemspec, .ru | standardrb कमांड उपलब्ध |
| terraform | .tf, .tfvars | terraform कमांड उपलब्ध |
| uv | .py, .pyi | uv कमांड उपलब्ध |
| zig | .zig, .zon | zig कमांड उपलब्ध |
जब फॉर्मेटर सक्षम होते हैं, तो OpenCode मिलान खाने वाली फ़ाइलों के लिए prettier का उपयोग करेगा यदि आपके प्रोजेक्ट के package.json में prettier है।
यह कैसे काम करता है
जब OpenCode किसी फ़ाइल को लिखता या संपादित करता है और फॉर्मेटर सक्षम होते हैं, तो यह:
- फ़ाइल एक्सटेंशन की जाँच सभी सक्षम फॉर्मेटर के विरुद्ध करता है।
- फ़ाइल पर उपयुक्त फॉर्मेटर कमांड चलाता है।
- फॉर्मेटिंग परिवर्तन लागू करता है।
यह प्रक्रिया सक्षम फॉर्मेटर के लिए पृष्ठभूमि में होती है।
कॉन्फ़िगर करें
आप अपनी OpenCode कॉन्फ़िग में formatter अनुभाग के माध्यम से फॉर्मेटर को सक्षम और कस्टमाइज़ कर सकते हैं।
सभी बिल्ट-इन फॉर्मेटर को सक्षम करने के लिए, formatter को true पर सेट करें।
{
"$schema": "https://opencode.ai/config.json",
"formatter": true
}ओवरराइड या कस्टम फॉर्मेटर कॉन्फ़िगर करते समय बिल्ट-इन को सक्षम रखने के लिए एक ऑब्जेक्ट का उपयोग करें।
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}प्रत्येक फॉर्मेटर कॉन्फ़िगरेशन निम्नलिखित को सपोर्ट करता है:
| गुण | प्रकार | विवरण |
|---|---|---|
disabled | boolean | फॉर्मेटर को अक्षम करने के लिए इसे true पर सेट करें |
command | string[] | फॉर्मेटिंग के लिए चलाई जाने वाली कमांड। कस्टम फॉर्मेटर के लिए आवश्यक; बिल्ट-इन के लिए वैकल्पिक। |
environment | object | फॉर्मेटर चलाते समय सेट किए जाने वाले एनवायरनमेंट वेरिएबल |
extensions | string[] | फ़ाइल एक्सटेंशन जिन्हें यह फॉर्मेटर संभालना चाहिए |
आइए कुछ उदाहरण देखें।
फॉर्मेटर अक्षम करना
यदि formatter छोड़ दिया जाता है, तो सभी फॉर्मेटर अक्षम होते हैं। किसी अन्य कॉन्फ़िग द्वारा उन्हें सक्षम करने के बाद सभी फॉर्मेटर को अक्षम करने के लिए, formatter को false पर सेट करें:
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}किसी विशिष्ट फॉर्मेटर को अक्षम करने के लिए, disabled को true पर सेट करें:
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}कस्टम फॉर्मेटर
आप बिल्ट-इन फॉर्मेटर को environment या extensions जैसे विकल्पों के साथ कॉन्फ़िगर कर सकते हैं। एक कस्टम फॉर्मेटर जोड़ने के लिए, एक command और extensions निर्दिष्ट करें:
{
"$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 प्लेसहोल्डर को फॉर्मेट की जा रही फ़ाइल के पथ से बदल दिया जाएगा।