सत्यापन
blume validate आपकी सामग्री के हर लिंक की जाँच करता है। इसमें पेज, एंकर, एसेट और वैकल्पिक रूप से बाहरी URL शामिल हैं। कोई लिंक टूटा होने पर यह CI को विफल कर देता है।
blume validate आपकी सामग्री को उसी तरह पढ़ता है जैसे बिल्ड पढ़ता है, और उसमें मिलने वाले हर लिंक की जाँच करता है। यह कुछ भी जनरेट या बिल्ड नहीं करता। इसलिए यह एक तेज़ जाँच है जिसे आप blume build से पहले चला सकते हैं:
blume validate
- आंतरिक पेज लिंक (
/guides/intro,./sibling) किसी वास्तविक पेज पर रिज़ॉल्व होने चाहिए। टूटे हुए लिंक त्रुटियों के रूप में रिपोर्ट किए जाते हैं। किसी कॉम्पोनेंट के स्ट्रिंगhref(<Card href="./install">) की जाँच भी इसी तरह होती है।href={…}एक्सप्रेशन की जाँच नहीं होती। - एंकर लिंक (
#section,/guides/intro#setup) लक्ष्य पेज के किसी एंकर से मेल खाने चाहिए। यह एंकर किसी हेडिंग का id (जनरेट किया गया या पिन किया गया) हो सकता है, या किसी raw HTML एलिमेंट काidएट्रिब्यूट। जो एंकर मेल नहीं खाते, वे चेतावनियों के रूप में रिपोर्ट किए जाते हैं। कोड ब्लॉक, इनलाइन कोड, HTML टिप्पणियों और<Prompt>ब्लॉक के अंदर के id नहीं गिने जाते। - एसेट लिंक की जाँच वहीं होती है जहाँ फ़ाइल रखी होती है। एब्सोल्यूट पाथ (
/logo.png) कोpublic/डायरेक्टरी में खोजा जाता है। रिलेटिव इमेज एम्बेड () को पेज के अपने फ़ोल्डर में खोजा जाता है। किसी रिलेटिव पाथ का सामान्य लिंक अब भी साइट रूट के रूप में ही रिज़ॉल्व होता है। केवल इमेज एम्बेड ही इमेज पाइपलाइन से होकर गुज़रते हैं। - बाहरी लिंक की जाँच केवल
--externalके साथ होती है। यह डिफ़ॉल्ट रूप से बंद रहता है, क्योंकि इसके लिए नेटवर्क चाहिए। डेड लिंक (404/410/पहुँच से बाहर) त्रुटियाँ माने जाते हैं। रेट-लिमिटेड या अस्थायी रिस्पॉन्स (403/429/5xx/टाइमआउट) चेतावनियाँ माने जाते हैं।
पेज किसे माना जाता है
लिंक केवल Markdown पेजों से नहीं, बल्कि बिल्ड की गई साइट द्वारा सर्व की जाने वाली हर चीज़ से रिज़ॉल्व होते हैं। इसमें ये शामिल हैं: कस्टम .astro पेज, जनरेट किया गया चेंजलॉग इंडेक्स और हर कॉन्फ़िगर किया गया रीडायरेक्ट। बहुभाषी साइट पर हर लोकेल के अंतर्गत किसी अनअनूदित पेज का फ़ॉलबैक URL भी शामिल है। जो पेज पार्स नहीं हो पाता, उसे लिंक से जुड़ी समस्याओं के साथ रिपोर्ट किया जाता है। ऐसा इसलिए, क्योंकि जो पेज कभी लोड ही नहीं होता, उसके लिंक जाँचे नहीं जा सकते। उसे सही परिणाम मान लेना ग़लत होगा।
फ़्लैग
--external— नेटवर्क के ज़रिए बाहरीhttp(s)लिंक की भी जाँच करता है।--strict— चेतावनियों पर भी नॉन-ज़ीरो कोड के साथ बाहर निकलता है। Info-स्तर के नोट्स केवल सलाह के रूप में रहते हैं।--json— टर्मिनल रिपोर्ट के बजाय डायग्नोस्टिक्स को JSON के रूप में stdout पर देता है।
डायग्नोस्टिक्स
| कोड | गंभीरता | अर्थ |
|---|---|---|
BLUME_BROKEN_LINK |
त्रुटि | कोई आंतरिक लिंक ऐसे रूट की ओर इशारा करता है जिसे कोई पेज सर्व नहीं करता। |
BLUME_BROKEN_ANCHOR |
चेतावनी | पेज मौजूद है, लेकिन उसमें फ़्रैगमेंट से मेल खाने वाला कोई एंकर नहीं है। |
BLUME_BROKEN_ASSET |
चेतावनी | कोई एब्सोल्यूट पाथ public/ में नहीं है, या कोई रिलेटिव इमेज एम्बेड पेज वाले फ़ोल्डर में नहीं है। |
BLUME_ASSETS_UNCHECKED |
जानकारी | कोई public/ डायरेक्टरी नहीं है, इसलिए एब्सोल्यूट एसेट पाथ की जाँच नहीं हुई। |
BLUME_DEAD_LINK |
त्रुटि या चेतावनी | किसी बाहरी लिंक (--external के साथ) ने 404/410 लौटाया या वह पहुँच से बाहर था (त्रुटि)। या उसने अस्थायी 403/429/5xx/टाइमआउट लौटाया (चेतावनी)। |
एग्ज़िट कोड ही तय करता है कि जाँच सफल रही या नहीं। त्रुटियाँ होने पर कमांड नॉन-ज़ीरो कोड के साथ बाहर निकलता है। --strict के साथ चेतावनियों पर भी ऐसा ही होता है।
JSON आउटपुट
--json के साथ, blume validate (और blume doctor) stdout पर एक ऑब्जेक्ट लिखते हैं। इसमें एक diagnostics सूची होती है। सूची की हर प्रविष्टि में ये फ़ील्ड होते हैं:
- उसका
code,severityऔरmessage - प्रोजेक्ट रूट के सापेक्ष
file, और जब समस्या का स्थान पता हो तोlineऔरcolumn - एक
suggestion - एक
docsUrl, जो उस कोड को समझाने वाले पेज की ओर इशारा करता है
इसके अलावा ऑब्जेक्ट में एक summary भी होता है, जिसमें हर गंभीरता स्तर की गिनती होती है। एग्ज़िट कोड वही रहता है। इसलिए एक ही कमांड CI की जाँच भी कर सकता है और एडिटर इंटीग्रेशन को डेटा भी दे सकता है।