ArrayKit

हुक बिल्डर

इवेंट हुक बनाइए और उन मैचर को पकड़िए जो कभी चलते ही नहीं।

हुक बिल्डर

इवेंट हुक बनाइए और उन मैचर को पकड़िए जो कभी चलते ही नहीं।

हुक कमांड अक्सर आंतरिक स्क्रिप्ट और पथ बताते हैं। सब कुछ ब्राउज़र में बनता है और कहीं नहीं भेजा जाता।

देखिए वे उपकरण क्या चला सकते हैं

हुक बिल्डर के बारे में

हुक सत्र के तय बिंदुओं पर शेल कमांड चलाते हैं: फ़ाइल लिखे जाने के बाद, किसी उपकरण के चलने से पहले, बारी ख़त्म होने पर। यह विन्यास का इकलौता हिस्सा है जो हर बार पूछे बिना कोड चलाता है, इसलिए इसकी चुपचाप होने वाली विफलताएँ पकड़ना सार्थक है। जिस मैचर में मौजूद ही न होने वाले उपकरण का नाम है, वह कभी नहीं चलता और शिकायत भी नहीं करता। जो कमांड कोई तर्क ढूँढ़ता है उसे ख़ाली स्ट्रिंग मिलती है, क्योंकि घटना मानक इनपुट पर JSON के रूप में आती है, तर्कों के रूप में नहीं। और जो होने वाला है उसे सचमुच रोक पाने की क्षमता कुछ ही घटनाओं में है। यह बिल्डर तीनों बातें सँभालता है और बताता है कि कौन-सी घटनाएँ रोक सकती हैं और कौन-सी सिर्फ़ देखती हैं।

विशेषताएँ

  • हर घटना, और वह किस पर चलती है
  • मैचर असली उपकरण नामों से मिलाए जाते हैं, बड़े-छोटे अक्षर समेत
  • जिस घटना का कोई उपकरण नहीं उस पर मैचर लगा हो तो चेतावनी
  • कमांड ऐसे तर्क ढूँढ़े जो उसे मिलेंगे ही नहीं, तो चेतावनी
  • कौन-सी घटनाएँ कार्रवाई रोक सकती हैं और कैसे
  • आम मैचर एक क्लिक में
  • कई हुक घटना और मैचर के हिसाब से सही ढंग से समूहित
  • बिना निगरानी चलने से पहले विनाशकारी कमांड को दिखाता है

हुक बिल्डर का उपयोग कैसे करें

  1. जिस घटना पर दख़ल देना है वह चुनिए
  2. घटना किसी उपकरण से जुड़ी हो तो मैचर जोड़िए
  3. मानक इनपुट से पेलोड पढ़ने वाला कमांड लिखिए
  4. चेतावनियाँ पढ़िए और आउटपुट settings.json में जोड़िए

उदाहरण

इनपुट

prettier --write "$1"

आउटपुट

Warning: $1 will be empty — a hook is not given arguments

घटना पाइप से JSON के रूप में आती है; उसे jq से पढ़िए।

सामान्य त्रुटियाँ और समस्या निवारण

  • हुक कभी चलता ही नहीं। — आम तौर पर मैचर। उपकरण नामों का पहला अक्षर बड़ा होता है और वे बड़े-छोटे में फ़र्क़ करते हैं — Write, write नहीं — और न मौजूद नाम चुपचाप किसी से नहीं मिलता।
  • कमांड चलता है पर इनपुट नहीं मिलता। — हुक का इनपुट मानक इनपुट पर JSON के रूप में आता है। तर्क की उम्मीद करने के बजाय jq -r '.tool_input.file_path' जैसी चीज़ से पढ़िए।
  • मेरा हुक उपकरण को रोक नहीं पाता। — यह कुछ ही घटनाएँ कर सकती हैं, और सिर्फ़ स्थिति 2 से बाहर निकलकर। बाक़ी सब «चलते रहो» माना जाता है, और PostToolUse जैसी घटनाएँ वैसे भी बाद में चलती हैं।
  • सत्र मेरे हुक पर अटक जाता है। — समय-सीमा तय कीजिए। जो हुक किसी चीज़ का इंतज़ार करता है — नेटवर्क कॉल, कोई लॉक — वह उतनी देर पूरे सत्र को रोके रखता है।

अक्सर पूछे जाने वाले प्रश्न

फ़ॉर्मैटर के लिए कौन-सी घटना लें?
लिखने वाले उपकरणों पर मैचर के साथ PostToolUse, ताकि वह तब चले जब फ़ाइल मौजूद हो। लिखने से पहले फ़ॉर्मैट करने को कुछ होता ही नहीं।
हुक को घटना कैसे मिलती है?
मानक इनपुट पर JSON के रूप में: उपकरण का नाम, उसका इनपुट और आसपास का संदर्भ। कमांड-लाइन तर्क के रूप में कुछ नहीं दिया जाता, इसीलिए $1 के इर्द-गिर्द लिखे कमांड को कुछ नहीं मिलता।
क्या हुक किसी उपकरण को चलने से रोक सकता है?
उसके चलने से पहले, हाँ: स्थिति 2 से बाहर निकलना रोक देता है। कौन-सी घटनाएँ यह करने देती हैं, यह चुनते ही दिख जाता है, क्योंकि बाद में चलने वाली घटना से रोकने की कोशिश आम भी है और उलझाने वाली भी।
क्या हुक बिना पूछे चलते हैं?
हाँ — यही उनका मक़सद है और यही वजह कि कोई भी हुक जोड़ने से पहले उसे ध्यान से पढ़ना चाहिए। फ़ाइलें मिटाने वाला हुक यहाँ दिखाया जाता है, पर आम नियम यही है कि इस फ़ाइल की हर चीज़ बिना निगरानी चलती है।
क्या एक घटना पर कई हुक हो सकते हैं?
हाँ। जिनकी घटना और मैचर एक हैं वे आउटपुट में एक साथ समूहित होते हैं — विन्यास फ़ाइल यही आकार चाहती है।

संबंधित टूल

एआई और एजेंट के और टूल

एआई और एजेंट के सभी टूल देखें · सभी टूल