Turbo: कैशिंग और टास्क पाइपलाइन
turbo.json पाइपलाइन परिभाषित करें, dependsOn से टास्क निर्भरताएँ कॉन्फ़िगर करें, और मशीनों के बीच कैश किए गए आउटपुट साझा करने के लिए रिमोट कैशिंग सक्षम करें।
Turbo: कैशिंग और टास्क पाइपलाइन, CoddyKit पर Frontend Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Frontend Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Frontend Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Turborepo का पुनरावलोकन
Turborepo (अब केवल Turbo) JavaScript मोनोरेपो के लिए उच्च-प्रदर्शन कार्य-निर्देशन उपकरण है। यह पैकेजों में कार्यों को समानांतर रूप से चलाता है, हैश के आधार पर आउटपुट कैश करता है और इनपुट न बदलने पर काम दोबारा नहीं करता।
कैशिंग क्यों महत्वपूर्ण है
20 पैकेज वाले मोनोरेपो में हर push पर हर पैकेज का परीक्षण चलाना महँगा होता है। यदि केवल एक पैकेज बदला है, तो Turbo उसका परीक्षण दोबारा चलाता है और बाकी 19 पैकेजों के कैश किए गए आउटपुट को फिर से चलाता है — इससे कई मिनट का काम कुछ सेकंड में हो जाता है।
हैशिंग कैसे काम करती है
Turbo इन चीज़ों का हैश बनाता है: स्रोत फ़ाइलें (इनपुट ग्लोब), निर्भरताएँ (package.json + lockfile), आपके द्वारा घोषित पर्यावरण चर और कार्य का अपना कॉन्फ़िगरेशन। समान हैश = समान काम = कैश हिट।
turbo.json — कार्य-प्रवाह
turbo.json में कार्यों और उनके संबंधों की घोषणा कीजिए।
// turbo.json
{
"$schema": "https://turbo.build/schema.json",
"tasks": {
"build": {
"dependsOn": ["^build"],
"inputs": ["src/**", "package.json"],
"outputs": ["dist/**", ".next/**"]
},
"test": {
"dependsOn": ["^build"],
"inputs": ["src/**", "test/**", "package.json"]
},
"lint": { "inputs": ["**/*.{ts,tsx,js,jsx}", ".eslintrc*"] },
"dev": { "cache": false, "persistent": true }
}
}इनपुट और आउटपुट
इनपुट: वे फ़ाइलें जो हैश में योगदान देती हैं। आउटपुट: वे फ़ाइलें जिन्हें Turbo को कैश करके फिर से उपलब्ध कराना चाहिए। इन्हें सही ढंग से तय करने पर आपकी कैश हिट दर 90% से अधिक हो सकती है।
dependsOn
['^build']: पहले निर्भरताओं का बिल्ड कीजिए। ['lint']: इसी पैकेज में इस कार्य से पहले lint चलाइए। ['^build', 'lint']: दोनों को मिलाइए।
cache: false और persistent: true
dev जैसे कार्य कभी कैश नहीं होते (वे संवादात्मक और लंबे समय तक चलने वाले होते हैं) और चलते रहते हैं (Turbo उन्हें सक्रिय रखता है)। देव सर्वर के लिए दोनों सेटिंग चालू कीजिए।
कार्य चलाना
Turbo CLI का उपयोग कीजिए।
npx turbo run build
npx turbo run test lint
npx turbo run build --filter=web
npx turbo run build --filter=web... --concurrency=10कैश के स्थान
डिफ़ॉल्ट रूप से स्थानीय कैश node_modules/.cache/turbo में रहता है। हर बार चलाने पर लॉग और कैप्चर किए गए आउटपुट बनते हैं। कैश हिट पर यह छपता है: 'cache hit, replaying logs'.
दूरस्थ कैशिंग
कैश को दूरस्थ संग्रह में भेजिए, ताकि सीआई और टीम के सदस्य कैश हिट साझा कर सकें। turbo login (Vercel Remote Cache) के माध्यम से निःशुल्क पंजीकरण कीजिए या स्वयं होस्ट कीजिए।
npx turbo login
npx turbo link # link to a Vercel remote cache
# In CI:
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: yourteamस्वयं-होस्ट किया गया दूरस्थ कैश
OSS के विकल्प: turborepo-remote-cache (Node), turbo-cache-server (Go)। इन्हें अपने बुनियादी ढाँचे पर तैनात कीजिए और TURBO_API पर्यावरण चर सेट कीजिए।
पर्यावरण चर के इनपुट
घोषित कीजिए कि कौन-से पर्यावरण चर आउटपुट को प्रभावित करते हैं — Turbo उन्हें इनपुट मानता है, इसलिए उनके बदलने पर कैश अमान्य हो जाता है।
// turbo.json
{
"tasks": {
"build": {
"env": ["NODE_ENV", "VITE_API_URL"],
"outputs": ["dist/**"]
}
},
"globalEnv": ["GITHUB_SHA"]
}फ़िल्टर करना
किसी विशिष्ट पैकेज या बदलाव से प्रभावित पैकेजों के लिए कार्य चलाइए।
# Specific package and its dependencies:
turbo run build --filter=web...
# Packages that depend on shared/ui:
turbo run test --filter='...@repo/ui'
# Changed since main:
turbo run lint --filter='[origin/main]'
# Combine:
turbo run build --filter=web...[origin/main]DRY_RUN और प्रोफ़ाइल बनाना
--dry=json कार्य-ग्राफ़ को चलाए बिना छापता है। --profile Chrome-DevTools जैसी ट्रेस फ़ाइल बनाता है।
turbo run build --dry=json | jq
turbo run build --profile=trace.json
# open chrome://tracing and load trace.jsonआम समस्याएँ
1) आउटपुट घोषित करना भूल जाना (Turbo उन्हें कैश नहीं करेगा)। 2) बिल्ड को प्रभावित करने वाले पर्यावरण चर को भूल जाना। 3) देव सर्वर को कैश करना (cache: false सेट कीजिए)। 4) सीआई में --frozen-lockfile का उपयोग न करना (lockfile में बदलाव से हैश बदल सकते हैं)।
त्वरित जाँच
Turbo कार्य के कॉन्फ़िगरेशन में कौन-से दो फ़ील्ड यह तय करते हैं कि आउटपुट को कैश से फिर से चलाया जा सकता है?
पुनरावलोकन: Turbo
मोनोरेपो कार्यों के लिए हैश-आधारित स्थानीय और दूरस्थ कैशिंग। turbo.json में dependsOn, inputs, outputs और env के साथ कार्य घोषित किए जाते हैं। देव सर्वर के लिए cache: false + persistent: true। --filter=web... और changed-since=[origin/main] से कार्यों को फ़िल्टर कीजिए। दूरस्थ कैश (Vercel या स्वयं-होस्ट किया गया) सीआई और टीम के बीच कैश हिट साझा करता है। --profile से प्रोफ़ाइल बनाइए। अधिकतम हिट दर के लिए इनपुट और आउटपुट सही ढंग से तय कीजिए।
एआई शिक्षक के साथ HTML सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 41
- पाठ
- 163
अक्सर पूछे जाने वाले प्रश्न
क्या “Turbo: कैशिंग और टास्क पाइपलाइन” पाठ निःशुल्क है?
हाँ—“Turbo: कैशिंग और टास्क पाइपलाइन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Frontend Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Frontend Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Turbo: कैशिंग और टास्क पाइपलाइन” में मैं क्या सीखूँगा?
turbo.json पाइपलाइन परिभाषित करें, dependsOn से टास्क निर्भरताएँ कॉन्फ़िगर करें, और मशीनों के बीच कैश किए गए आउटपुट साझा करने के लिए रिमोट कैशिंग सक्षम करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Frontend Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Frontend Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Frontend Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“Turbo: कैशिंग और टास्क पाइपलाइन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Frontend Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Frontend Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Vite: प्लगइन सिस्टम और SSR मोड
- esbuild: गति और सीमाएँ
- मोноरेपो के लिए pnpm वर्कस्पेस
- Turbo: कैशिंग और टास्क पाइपलाइन