कॉन्फिगरेशन
Repomix को कॉन्फिगरेशन फ़ाइल या कमांड-लाइन विकल्पों का उपयोग करके कॉन्फिगर किया जा सकता है। कॉन्फिगरेशन फ़ाइल आपको अपने कोडबेस के प्रसंस्करण और आउटपुट के विभिन्न पहलुओं को अनुकूलित करने की अनुमति देती है।
कॉन्फिगरेशन फ़ाइल प्रारूप
Repomix लचीलेपन और उपयोग में आसानी के लिए कई कॉन्फिगरेशन फ़ाइल प्रारूपों का समर्थन करता है।
Repomix स्वचालित रूप से निम्नलिखित प्राथमिकता क्रम में कॉन्फिगरेशन फ़ाइलों को खोजेगा:
- TypeScript (
repomix.config.ts,repomix.config.mts,repomix.config.cts) - JavaScript/ES Module (
repomix.config.js,repomix.config.mjs,repomix.config.cjs) - JSON (
repomix.config.json5,repomix.config.jsonc,repomix.config.json)
JSON कॉन्फिगरेशन
अपनी प्रोजेक्ट डायरेक्टरी में एक कॉन्फिगरेशन फ़ाइल बनाएं:
repomix --initयह डिफ़ॉल्ट सेटिंग्स के साथ एक repomix.config.json फ़ाइल बनाएगा। आप एक ग्लोबल कॉन्फिगरेशन फ़ाइल भी बना सकते हैं जो स्थानीय कॉन्फिगरेशन नहीं मिलने पर फ़ॉलबैक के रूप में उपयोग होगी:
repomix --init --globalTypeScript कॉन्फिगरेशन
TypeScript कॉन्फिगरेशन फ़ाइलें पूर्ण टाइप चेकिंग और IDE समर्थन के साथ सर्वोत्तम developer अनुभव प्रदान करती हैं।
इंस्टॉलेशन:
TypeScript या JavaScript कॉन्फिगरेशन को defineConfig के साथ उपयोग करने के लिए, आपको Repomix को dev dependency के रूप में इंस्टॉल करना होगा:
npm install -D repomixउदाहरण:
// repomix.config.ts
import { defineConfig } from 'repomix';
export default defineConfig({
output: {
filePath: 'output.xml',
style: 'xml',
removeComments: true,
},
ignore: {
customPatterns: ['**/node_modules/**', '**/dist/**'],
},
});लाभ:
- ✅ आपके IDE में पूर्ण TypeScript टाइप चेकिंग
- ✅ उत्कृष्ट IDE autocomplete और IntelliSense
- ✅ गतिशील मान का उपयोग करें (timestamps, environment variables, आदि)
गतिशील मान उदाहरण:
// repomix.config.ts
import { defineConfig } from 'repomix';
// Timestamp-आधारित फ़ाइल नाम generate करें
const timestamp = new Date().toISOString().slice(0, 19).replace(/[:.]/g, '-');
export default defineConfig({
output: {
filePath: `output-${timestamp}.xml`,
style: 'xml',
},
});JavaScript कॉन्फिगरेशन
JavaScript कॉन्फिगरेशन फ़ाइलें TypeScript की तरह ही काम करती हैं, defineConfig और गतिशील मानों का समर्थन करती हैं।
कॉन्फिगरेशन विकल्प
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
input.maxFileSize | प्रोसेस करने के लिए अधिकतम फ़ाइल आकार बाइट्स में। इससे बड़ी फ़ाइलें छोड़ दी जाएंगी। बड़ी बाइनरी फ़ाइलों या डेटा फ़ाइलों को बाहर करने के लिए उपयोगी | 50000000 |
input.processors | { pattern, command, timeout?, onError? } प्रविष्टियों का एक क्रमबद्ध एरे जो पैकिंग से पहले मेल खाने वाली फ़ाइलों को रूपांतरित करने के लिए एक बाहरी कमांड चलाता है (उदा., JSON→TOON)। पहला मेल खाने वाला glob जीतता है। यह मनमाने कमांड चलाता है, इसलिए यह केवल लोकल CLI रन (और --remote-trust-config के साथ रिमोट रिपॉजिटरी) के लिए ही चलता है। देखें फ़ाइल प्रोसेसर्स | सेट नहीं |
output.filePath | आउटपुट फ़ाइल का नाम। XML, Markdown, और सादे टेक्स्ट फ़ॉर्मेट का समर्थन करता है | "repomix-output.xml" |
output.style | आउटपुट स्टाइल (xml, markdown, json, plain)। प्रत्येक फ़ॉर्मेट के विभिन्न AI टूल्स के लिए अपने फायदे हैं | "xml" |
output.filePathStyle | आउटपुट में फ़ाइल पथ कैसे दिखाए जाएंगे (target-relative प्रत्येक टारगेट रूट के सापेक्ष पथ रखता है, cwd-relative वर्तमान कार्य डायरेक्टरी के सापेक्ष पथ रखता है) | "target-relative" |
output.parsableStyle | चुनी गई स्टाइल स्कीमा के अनुसार आउटपुट को एस्केप करना है या नहीं। बेहतर पार्सिंग सक्षम करता है लेकिन टोकन संख्या बढ़ा सकता है | false |
output.compress | संरचना को संरक्षित करते हुए टोकन संख्या कम करने के लिए Tree-sitter का उपयोग करके बुद्धिमान कोड निष्कर्षण करना है या नहीं | false |
output.patterns | प्रति-फ़ाइल समावेशन स्तर। { pattern, compress?, directoryStructureOnly? } प्रविष्टियों का एक क्रमबद्ध एरे; पहला मेल खाने वाला glob जीतता है और उस फ़ाइल के लिए ग्लोबल output.compress को ओवरराइड करता है। देखें प्रति-फ़ाइल समावेशन स्तर | सेट नहीं |
output.headerText | फ़ाइल हेडर में शामिल करने के लिए कस्टम टेक्स्ट। AI टूल्स के लिए संदर्भ या निर्देश प्रदान करने के लिए उपयोगी | null |
output.instructionFilePath | AI प्रसंस्करण के लिए विस्तृत कस्टम निर्देशों वाली फ़ाइल का पथ | null |
output.fileSummary | शुरुआत में फ़ाइल संख्या, आकार और अन्य मेट्रिक्स दिखाने वाला सारांश सेक्शन शामिल करना है या नहीं | true |
output.directoryStructure | आउटपुट में डायरेक्टरी संरचना शामिल करनी है या नहीं। AI को प्रोजेक्ट संगठन समझने में मदद करता है | true |
output.files | आउटपुट में फ़ाइल सामग्री शामिल करनी है या नहीं। केवल संरचना और मेटाडेटा शामिल करने के लिए false सेट करें | true |
output.removeComments | समर्थित फ़ाइल प्रकारों से टिप्पणियां हटानी हैं या नहीं। शोर और टोकन संख्या कम कर सकता है | false |
output.removeEmptyLines | टोकन संख्या कम करने के लिए आउटपुट से खाली लाइनें हटानी हैं या नहीं | false |
output.showLineNumbers | प्रत्येक लाइन में लाइन नंबर जोड़ना है या नहीं। कोड के विशिष्ट भागों को संदर्भित करने के लिए सहायक | false |
output.truncateBase64 | टोकन संख्या कम करने के लिए लंबी base64 डेटा स्ट्रिंग्स (जैसे, छवियां) को छोटा करना है या नहीं | false |
output.copyToClipboard | फ़ाइल सेव करने के अतिरिक्त आउटपुट को सिस्टम क्लिपबोर्ड पर कॉपी करना है या नहीं | false |
output.splitOutput | अधिकतम आकार प्रति भाग के अनुसार आउटपुट को कई नंबर वाली फ़ाइलों में विभाजित करें (उदा., ~1MB के लिए 1000000)। CLI पठनीय आकार जैसे 500kb या 2mb स्वीकार करता है। प्रत्येक फ़ाइल को सीमा के अंदर रखता है और स्रोत फ़ाइलों को भागों में विभाजित होने से रोकता है | सेट नहीं |
output.tokenBudget | जब पैक किया गया आउटपुट इतने टोकन से अधिक हो जाए तो गैर-शून्य एग्जिट कोड के साथ विफल करें। CI/एजेंट कॉन्टेक्स्ट सीमाओं के लिए गार्ड के रूप में कार्य करता है; आउटपुट फिर भी जनरेट होता है | सेट नहीं |
output.topFilesLength | सारांश में दिखाने के लिए शीर्ष फ़ाइलों की संख्या। 0 पर सेट करने से कोई सारांश प्रदर्शित नहीं होगा | 5 |
output.includeEmptyDirectories | रिपॉजिटरी संरचना में खाली डायरेक्टरियां शामिल करनी हैं या नहीं | false |
output.includeFullDirectoryStructure | include पैटर्न का उपयोग करते समय, केवल शामिल फ़ाइलों को प्रोसेस करते हुए, पूर्ण डायरेक्टरी ट्री (ignore पैटर्न का सम्मान करते हुए) प्रदर्शित करना है या नहीं। AI विश्लेषण के लिए पूर्ण रिपॉजिटरी संदर्भ प्रदान करता है | false |
output.git.sortByChanges | Git परिवर्तन संख्या के अनुसार फ़ाइलों को सॉर्ट करना है या नहीं। अधिक परिवर्तन वाली फ़ाइलें नीचे दिखाई देती हैं | true |
output.git.sortByChangesMaxCommits | Git परिवर्तनों का विश्लेषण करने के लिए अधिकतम कमिट संख्या। प्रदर्शन के लिए इतिहास गहराई को सीमित करता है | 100 |
output.git.includeDiffs | आउटपुट में Git अंतर शामिल करना है या नहीं। वर्क ट्री और स्टेज्ड परिवर्तनों को अलग-अलग दिखाता है | false |
output.git.includeLogs | आउटपुट में Git logs शामिल करना है या नहीं। कमिट तारीखों, संदेशों और फ़ाइल पथों को दिखाता है | false |
output.git.includeLogsCount | आउटपुट में शामिल करने के लिए git log कमिट की संख्या | 50 |
include | शामिल करने के लिए फ़ाइल पैटर्न glob patterns का उपयोग करके | [] |
ignore.useGitignore | प्रोजेक्ट की .gitignore फ़ाइल के पैटर्न का उपयोग करना है या नहीं | true |
ignore.useDotIgnore | प्रोजेक्ट की .ignore फ़ाइल के पैटर्न का उपयोग करना है या नहीं | true |
ignore.useDefaultPatterns | डिफ़ॉल्ट ignore पैटर्न (node_modules, .git, आदि) का उपयोग करना है या नहीं | true |
ignore.customPatterns | अतिरिक्त ignore पैटर्न glob patterns का उपयोग करके | [] |
security.enableSecurityCheck | संवेदनशील जानकारी का पता लगाने के लिए Secretlint का उपयोग करके सुरक्षा जांच करनी है या नहीं | true |
tokenCount.encoding | OpenAI संगत टोकन काउंट एन्कोडिंग (उदा., GPT-4o के लिए o200k_base, GPT-4/3.5 के लिए cl100k_base)। gpt-tokenizer का उपयोग करता है। | "o200k_base" |
कॉन्फिगरेशन फ़ाइल JSON5 सिंटैक्स का समर्थन करती है, जो निम्नलिखित की अनुमति देता है:
- टिप्पणियां (एकल-लाइन और मल्टी-लाइन दोनों)
- ऑब्जेक्ट्स और एरे में trailing commas
- बिना quotes के प्रॉपर्टी नाम
- अधिक लचीला स्ट्रिंग सिंटैक्स
स्कीमा सत्यापन
आप $schema प्रॉपर्टी जोड़कर अपनी कॉन्फिगरेशन फ़ाइल के लिए स्कीमा सत्यापन सक्षम कर सकते हैं:
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"output": {
"filePath": "repomix-output.md",
"style": "markdown"
}
}यह JSON स्कीमा समर्थित एडिटर्स में auto-completion और validation प्रदान करता है।
उदाहरण कॉन्फिगरेशन फ़ाइल
यहां एक पूर्ण कॉन्फिगरेशन फ़ाइल (repomix.config.json) का उदाहरण है:
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"input": {
"maxFileSize": 50000000,
// "processors": [
// { "pattern": "**/*.json", "command": "npx @toon-format/cli {file}" }
// ]
},
"output": {
"filePath": "repomix-output.xml",
"style": "xml",
"filePathStyle": "target-relative",
"parsableStyle": false,
"compress": false,
"headerText": "पैकेज्ड फ़ाइल के लिए कस्टम हेडर जानकारी।",
"fileSummary": true,
"directoryStructure": true,
"files": true,
"removeComments": false,
"removeEmptyLines": false,
"topFilesLength": 5,
"showLineNumbers": false,
// "patterns": [
// { "pattern": "docs/**/*", "compress": true },
// { "pattern": "website/**/*", "directoryStructureOnly": true }
// ],
"truncateBase64": false,
"copyToClipboard": false,
"includeEmptyDirectories": false,
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": false,
"includeLogs": false,
"includeLogsCount": 50
}
},
"include": ["**/*"],
"ignore": {
"useGitignore": true,
"useDefaultPatterns": true,
// पैटर्न .repomixignore में भी निर्दिष्ट किए जा सकते हैं
"customPatterns": [
"additional-folder",
"**/*.log"
],
},
"security": {
"enableSecurityCheck": true
},
"tokenCount": {
"encoding": "o200k_base"
}
}कॉन्फिगरेशन फ़ाइल स्थान
Repomix निम्नलिखित क्रम में कॉन्फिगरेशन फ़ाइलों की तलाश करता है:
- वर्तमान डायरेक्टरी में स्थानीय कॉन्फिगरेशन फ़ाइल (प्राथमिकता क्रम: TS > JS > JSON)
- TypeScript:
repomix.config.ts,repomix.config.mts,repomix.config.cts - JavaScript:
repomix.config.js,repomix.config.mjs,repomix.config.cjs - JSON:
repomix.config.json5,repomix.config.jsonc,repomix.config.json
- TypeScript:
- ग्लोबल कॉन्फिगरेशन फ़ाइल (प्राथमिकता क्रम: TS > JS > JSON)
- Windows:
- TypeScript:
%LOCALAPPDATA%\Repomix\repomix.config.ts,.mts,.cts - JavaScript:
%LOCALAPPDATA%\Repomix\repomix.config.js,.mjs,.cjs - JSON:
%LOCALAPPDATA%\Repomix\repomix.config.json5,.jsonc,.json
- TypeScript:
- macOS/Linux:
- TypeScript:
~/.config/repomix/repomix.config.ts,.mts,.cts - JavaScript:
~/.config/repomix/repomix.config.js,.mjs,.cjs - JSON:
~/.config/repomix/repomix.config.json5,.jsonc,.json
- TypeScript:
- Windows:
कमांड-लाइन विकल्प कॉन्फिगरेशन फ़ाइल सेटिंग्स से प्राथमिकता रखते हैं।
Ignore पैटर्न
Repomix कई तरीके प्रदान करता है जिससे आप निर्दिष्ट कर सकते हैं कि कौन सी फ़ाइलों को ignore करना है:
- .gitignore: डिफ़ॉल्ट रूप से, प्रोजेक्ट की
.gitignoreफ़ाइल और.git/info/excludeमें सूचीबद्ध पैटर्न का उपयोग किया जाता है। इस व्यवहार कोignore.useGitignoreसेटिंग या--no-gitignoreCLI विकल्प के साथ नियंत्रित किया जा सकता है। - .ignore: आप अपने प्रोजेक्ट रूट में
.ignoreफ़ाइल का उपयोग कर सकते हैं, जो.gitignoreके समान प्रारूप का पालन करती है। यह फ़ाइल ripgrep और the silver searcher जैसे उपकरणों द्वारा उपयोग की जाती है, जिससे कई ignore फ़ाइलों को बनाए रखने की आवश्यकता कम हो जाती है। इस व्यवहार कोignore.useDotIgnoreसेटिंग या--no-dot-ignoreCLI विकल्प के साथ नियंत्रित किया जा सकता है। - डिफ़ॉल्ट पैटर्न: Repomix में आमतौर पर बाहर की गई फ़ाइलों और डायरेक्टरीज़ की एक डिफ़ॉल्ट सूची शामिल है (जैसे node_modules, .git, बाइनरी फ़ाइलें)। इस सुविधा को
ignore.useDefaultPatternsसेटिंग या--no-default-patternsCLI विकल्प के साथ नियंत्रित किया जा सकता है। अधिक विवरण के लिए कृपया defaultIgnore.ts देखें। - .repomixignore: आप Repomix-विशिष्ट ignore पैटर्न को परिभाषित करने के लिए अपने प्रोजेक्ट रूट में
.repomixignoreफ़ाइल बना सकते हैं। यह फ़ाइल.gitignoreके समान प्रारूप का पालन करती है। - कस्टम पैटर्न: अतिरिक्त ignore पैटर्न को कॉन्फिगरेशन फ़ाइल में
ignore.customPatternsविकल्प का उपयोग करके निर्दिष्ट किया जा सकता है। आप इस सेटिंग को-i, --ignoreकमांड लाइन विकल्प के साथ ओवरराइट कर सकते हैं।
प्राथमिकता क्रम (उच्च से निम्न):
- कस्टम पैटर्न (
ignore.customPatterns) - Ignore फ़ाइलें (
.repomixignore,.ignore,.gitignore, और.git/info/exclude):- जब नेस्टेड डायरेक्टरीज़ में हों, तो गहरी डायरेक्टरीज़ में फ़ाइलें अधिक प्राथमिकता रखती हैं
- जब समान डायरेक्टरी में हों, तो ये फ़ाइलें बिना किसी विशेष क्रम के मर्ज की जाती हैं
- डिफ़ॉल्ट पैटर्न (यदि
ignore.useDefaultPatternstrue है और--no-default-patternsउपयोग नहीं किया गया है)
.repomixignore का उदाहरण:
# कैश डायरेक्टरीज़
.cache/
tmp/
# बिल्ड आउटपुट
dist/
build/
# लॉग्स
*.logडिफ़ॉल्ट Ignore पैटर्न
जब ignore.useDefaultPatterns true है, तो Repomix स्वचालित रूप से सामान्य पैटर्न को ignore करता है:
node_modules/**
.git/**
coverage/**
dist/**पूरी सूची के लिए defaultIgnore.ts देखें
उन्नत सुविधाएं
कोड कम्प्रेशन
कोड कम्प्रेशन सुविधा, output.compress: true के साथ सक्षम, Tree-sitter का उपयोग करके आवश्यक कोड संरचनाओं को बुद्धिमानी से निकालती है जबकि implementation details को हटाती है। यह महत्वपूर्ण संरचनात्मक जानकारी बनाए रखते हुए टोकन संख्या कम करने में मदद करता है।
मुख्य लाभ:
- टोकन संख्या में महत्वपूर्ण कमी
- क्लास और फ़ंक्शन signatures को संरक्षित करता है
- imports और exports को बनाए रखता है
- type definitions और interfaces को संरक्षित करता है
- फ़ंक्शन bodies और implementation details को हटाता है
अधिक विवरण और उदाहरणों के लिए, कोड कम्प्रेशन गाइड देखें।
प्रति-फ़ाइल समावेशन स्तर
जहां output.compress प्रत्येक फ़ाइल पर एक ही स्तर लागू करता है, वहीं output.patterns आपको अपनी कॉन्फिगरेशन फ़ाइल से प्रति glob विवरण स्तर को नियंत्रित करने देता है। प्रत्येक प्रविष्टि glob के द्वारा फ़ाइलों को लक्षित करती है (include/ignore की तरह ही मिलान किया जाता है) और मेल खाने वाली फ़ाइलों के लिए ग्लोबल output.compress सेटिंग को ओवरराइड करती है।
{
"output": {
"compress": false, // ग्लोबल डिफ़ॉल्ट कैच-ऑल के रूप में कार्य करता है
"patterns": [
{ "pattern": "docs/**/*", "compress": true },
{ "pattern": "website/**/*", "directoryStructureOnly": true }
]
}
}प्रत्येक फ़ाइल तीन स्तरों में से एक में हल होती है:
- पूर्ण सामग्री (डिफ़ॉल्ट): फ़ाइल की पूर्ण सामग्री शामिल की जाती है।
- कम्प्रेस्ड (
compress: true): सामग्री कोoutput.compressके समान Tree-sitter पाइपलाइन से गुजारा जाता है। - केवल-डायरेक्टरी-संरचना (
directoryStructureOnly: true): फ़ाइल को डायरेक्टरी संरचना में सूचीबद्ध किया जाता है, लेकिन इसकी सामग्री ब्लॉक को आउटपुट से पूरी तरह छोड़ दिया जाता है।
नियम:
- पैटर्न को एरे क्रम में मूल्यांकित किया जाता है और किसी दी गई फ़ाइल के लिए पहला मेल खाने वाला पैटर्न जीतता है।
- मेल खाने वाले पैटर्न के फ़्लैग ग्लोबल
output.compressसेटिंग को ओवरराइड करते हैं। ऐसा पैटर्न जो बिना कोई फ़्लैग सेट किए मेल खाता है, उस फ़ाइल के लिए पूर्ण सामग्री को बाध्य करता है, जो ग्लोबलcompressसे फ़ाइलों को व्हाइटलिस्ट करने के लिए उपयोगी है। - जब एक ही पैटर्न पर दोनों सेट हों, तो
directoryStructureOnlyकोcompressपर प्राथमिकता मिलती है। - यदि कोई पैटर्न मेल नहीं खाता, तो ग्लोबल व्यवहार लागू होता है (पूर्ण सामग्री, या जब
output.compresstrueहो तो कम्प्रेस्ड)।
यह विकल्प केवल कॉन्फिगरेशन-फ़ाइल के लिए है; इसका कोई समकक्ष CLI फ़्लैग नहीं है।
फ़ाइल प्रोसेसर्स
input.processors किसी फ़ाइल की सामग्री को पैक किए जाने से पहले बदलने के लिए एक बाहरी कमांड चलाता है। प्रत्येक प्रविष्टि glob के द्वारा फ़ाइलों को लक्षित करती है (include/ignore की तरह ही मिलान किया जाता है) और मेल खाने वाली फ़ाइलों की सामग्री को कमांड के standard output से बदल देती है। यह टोकन कम करने वाले या फ़ॉर्मेट बदलने वाले रूपांतरणों के लिए उपयोगी है, उदाहरण के लिए JSON को TOON में बदलना, SVGs को minify करना, या notebooks को सादे scripts में बदलना।
{
"input": {
"processors": [
{
"pattern": "**/*.json",
"command": "npx @toon-format/cli {file}"
}
]
}
}यह कैसे काम करता है:
- Repomix प्रत्येक मेल खाने वाली फ़ाइल की सामग्री को एक अस्थायी फ़ाइल में लिखता है और कमांड में
{file}placeholder के स्थान पर उसका पथ प्रतिस्थापित करता है (यह placeholder आवश्यक है)। - कमांड shell के माध्यम से चलता है, इसलिए pipes और
npxजैसे टूल्स काम करते हैं। इसका standard output फ़ाइल की नई सामग्री बन जाता है, जो फिर किसी अन्य फ़ाइल की तरह ही pipeline के बाकी हिस्सों (security जांच, token गणना, और आउटपुट निर्माण) से होकर गुजरता है। - पैटर्न को एरे क्रम में मूल्यांकित किया जाता है और पहला मेल खाने वाला पैटर्न जीतता है — एक फ़ाइल को अधिकतम एक ही प्रोसेसर द्वारा रूपांतरित किया जाता है (कोई chaining नहीं)।
प्रति-प्रोसेसर विकल्प:
timeout: कमांड की प्रतीक्षा करने के लिए अधिकतम समय मिलीसेकंड में। डिफ़ॉल्ट:60000(60s)। ध्यान दें कि cold cache पर पैकेज डाउनलोड करने के लिएnpxको अतिरिक्त समय की आवश्यकता हो सकती है।onError: जब कमांड non-zero स्टेटस के साथ एग्जिट हो या टाइमआउट हो जाए तो क्या करना है।"fail"(डिफ़ॉल्ट) पूरे pack को abort कर देता है;"skip"एक चेतावनी लॉग करता है और फ़ाइल की मूल सामग्री पर वापस चला जाता है।
उदाहरण कमांड (प्रत्येक एक command मान है जो एक उपयुक्त pattern के साथ जोड़ा गया है):
| पैटर्न | command | यह क्या करता है |
|---|---|---|
**/*.json | jq -c . {file} | व्हाइटस्पेस हटाकर JSON को कॉम्पैक्ट करता है |
**/*.json | npx @toon-format/cli {file} | JSON को TOON में बदलता है, जो एक कॉम्पैक्ट और token-कुशल फ़ॉर्मेट है |
**/*.svg | npx svgo -i {file} -o - | SVG को मिनिफ़ाई करता है |
**/*.ipynb | jupyter nbconvert --to script --stdout {file} | Jupyter notebook को एक सामान्य Python स्क्रिप्ट में बदलता है |
चूँकि पहला मेल खाने वाला पैटर्न जीतता है, इसलिए प्रति फ़ाइल केवल एक ही प्रोसेसर लागू करें — उदाहरण के लिए **/*.json के लिए jq या TOON कन्वर्टर में से कोई एक चुनें। कमांड को रूपांतरित सामग्री को स्टैंडर्ड आउटपुट पर लिखना चाहिए, और यह जिस टूल को इनवोक करता है वह आपके PATH पर उपलब्ध होना चाहिए (npx-आधारित कमांड पहली बार उपयोग करने पर टूल डाउनलोड करते हैं)।
सुरक्षा
फ़ाइल प्रोसेसर्स आपकी कॉन्फिगरेशन फ़ाइल से मनमाने कमांड चलाते हैं, इसलिए वे एक सख्त trust मॉडल का पालन करते हैं:
- वे केवल local CLI रन के लिए काम करते हैं, जहां Repomix यह मानता है कि आपकी working directory में मौजूद कॉन्फ़िग आपकी अपनी है — यह ठीक वही trust boundary है जो किसी npm script या Makefile के साथ होती है। इसी तरह, अगर आप किसी ऐसी repository के अंदर
repomixचलाते हैं जो आपने किसी और से प्राप्त की है, और पहले उसकीrepomix.config.jsonकी समीक्षा किए बिना, तो उसके processor commands आपकी मशीन पर चल जाएंगे। किसी untrusted repository को pack करने से पहले उसका कॉन्फ़िग जरूर देखें। - वे library API (
pack()/runCli()), MCP सर्वर, और होस्टेड repomix.com के लिए अक्षम हैं, इसलिए इनमें से कोई भी कॉन्फ़िग से कमांड नहीं चला सकता। - रिमोट रिपॉजिटरी (
--remote) के लिए, क्लोन की गई रिपॉजिटरी के कॉन्फ़िग — और इसलिए उसके processors — पर तभी भरोसा किया जाता है जब आप स्पष्ट रूप से--remote-trust-configपास करते हैं। इसके बिना, remote कॉन्फ़िग लोड तक नहीं होता।
सक्रिय प्रोसेसर्स को स्टार्टअप पर लॉग किया जाता है ताकि किसी अपरिचित कॉन्फ़िग से अप्रत्याशित प्रोसेसर्स दिखाई दे सकें। चूंकि कमांड स्टार्टअप पर और एरर मैसेज में प्रिंट होता है, इसलिए क्रेडेंशियल्स को सीधे कमांड में शामिल करने के बजाय environment variables (उदा., $TOKEN) के माध्यम से संदर्भित करें, जो बिना expand हुए लॉग किए जाते हैं।
नोट्स:
- किसी फ़ॉर्मेट बदलने वाले प्रोसेसर को उसी फ़ाइल पर
output.compress,output.removeComments, याoutput.patternsकेcompressके साथ जोड़ना अनुशंसित नहीं है: ये चरण फ़ाइल के मूल एक्सटेंशन के आधार पर तय होते हैं, इसलिए ये रूपांतरित सामग्री पर गलत भाषा हैंडलर चला सकते हैं। इसी कारण से, Markdown आउटपुट में कोड फ़ेंस को भी मूल एक्सटेंशन के अनुसार लेबल किया जाता है (उदा., JSON→TOON फ़ाइल कोjsonके रूप में फ़ेंस किया जाता है)। कम्प्रेशन best-effort है और पार्स विफलता पर चुपचाप रूपांतरित सामग्री पर वापस चला जाता है। --watchके साथ, मेल खाने वाली फ़ाइलों को हर rebuild पर फिर से प्रोसेस किया जाता है, जो हर बार कमांड को फिर से चलाता है।- टाइमआउट होने पर, Repomix कमांड के shell को समाप्त कर देता है; जो कमांड अपनी स्वयं की लंबे समय तक चलने वाली बैकग्राउंड प्रक्रियाएं (background processes) बनाता है, वे चलती रह सकती हैं।
- प्रोसेसर्स केवल टेक्स्ट फ़ाइलें देखते हैं (बाइनरी फ़ाइलों को प्रोसेसिंग से पहले बाहर रखा जाता है), और उनका आउटपुट UTF-8 के रूप में पढ़ा जाता है।
Git एकीकरण
output.git कॉन्फिगरेशन शक्तिशाली Git-aware सुविधाएं प्रदान करता है:
sortByChanges: जब true है, तो फ़ाइलें Git परिवर्तनों की संख्या (फ़ाइल को modify करने वाले commits) के अनुसार सॉर्ट होती हैं। अधिक परिवर्तन वाली फ़ाइलें आउटपुट के नीचे दिखाई देती हैं। यह अधिक सक्रिय रूप से विकसित फ़ाइलों को प्राथमिकता देने में मदद करता है। डिफ़ॉल्ट:truesortByChangesMaxCommits: फ़ाइल परिवर्तनों की गिनती करते समय विश्लेषित करने के लिए अधिकतम commits। डिफ़ॉल्ट:100includeDiffs: जब true है, तो आउटपुट में Git अंतर शामिल करता है (work tree और staged changes को अलग-अलग शामिल करता है)। यह reader को repository में pending changes देखने की अनुमति देता है। डिफ़ॉल्ट:falseincludeLogs: जब true है, तो आउटपुट में Git कमिट इतिहास शामिल करता है। प्रत्येक कमिट के लिए कमिट तारीखें, संदेश और फ़ाइल पथ दिखाता है। यह AI को विकास पैटर्न और फ़ाइल संबंधों को समझने में मदद करता है। डिफ़ॉल्ट:falseincludeLogsCount: git logs में शामिल करने के लिए हाल के commits की संख्या। डिफ़ॉल्ट:50
कॉन्फिगरेशन उदाहरण:
{
"output": {
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": true,
"includeLogs": true,
"includeLogsCount": 25
}
}
}सुरक्षा जांच
जब security.enableSecurityCheck सक्षम है, तो Repomix आउटपुट में शामिल करने से पहले आपके कोडबेस में संवेदनशील जानकारी का पता लगाने के लिए Secretlint का उपयोग करता है। यह निम्नलिखित की आकस्मिक exposure को रोकने में मदद करता है:
- API keys
- Access tokens
- Private keys
- Passwords
- अन्य संवेदनशील credentials
टिप्पणी हटाना
जब output.removeComments को true सेट किया जाता है, तो आउटपुट का आकार कम करने और आवश्यक कोड सामग्री पर ध्यान केंद्रित करने के लिए समर्थित फ़ाइल प्रकारों से टिप्पणियां हटा दी जाती हैं। यह विशेष रूप से तब उपयोगी हो सकता है जब:
- भारी documented कोड के साथ काम कर रहे हों
- टोकन संख्या कम करने की कोशिश कर रहे हों
- कोड structure और logic पर ध्यान केंद्रित कर रहे हों
समर्थित भाषाओं और विस्तृत उदाहरणों के लिए, टिप्पणी हटाने की गाइड देखें।
संबंधित संसाधन
- कमांड लाइन विकल्प - पूर्ण CLI संदर्भ (CLI विकल्प कॉन्फिग फाइल सेटिंग्स को ओवरराइड करते हैं)
- आउटपुट फॉर्मेट - प्रत्येक आउटपुट फॉर्मेट का विवरण
- सुरक्षा - Repomix संवेदनशील जानकारी का पता कैसे लगाता है
- कोड कम्प्रेशन - Tree-sitter के साथ टोकन संख्या कम करें
- GitHub रिपॉजिटरी प्रोसेसिंग - रिमोट रिपॉजिटरी के लिए विकल्प