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