Bun 1.4 ने आपकी 15 डिपेंडेंसीज़ को तुरंत हटा दिया

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

스크립트

00:00:00BUN का सबसे बड़ा और सबसे विवादास्पद अपडेट आ गया है, BUN 1.4, यानी रस्ट (Rust) रीराइट।
00:00:04खैर, रीराइट के इस ड्रामे पर मैं पहले ही एक वीडियो बना चुका हूँ, तो आइए सीधे नई चीज़ों पर ध्यान देते हैं,
00:00:07क्योंकि मुझे इनमें से कुछ चीज़ें वाकई पसंद आई हैं, खासकर स्टैंडर्ड लाइब्रेरी वाली,
00:00:11क्योंकि अब इसमें एक इन-बिल्ट हेडलेस ब्राउज़र, इमेज लाइब्रेरी, स्यूडो-टर्मिनल, मार्कडाउन,
00:00:15क्रॉनजॉब, टेबल्स और बहुत कुछ है, जो आपकी इस्तेमाल की जा रही 15 डिपेंडencies की जगह ले लेगा।
00:00:19पिछले कुछ सालों में, जावास्क्रिप्ट की सबसे बड़ी शिकायतों में से एक स्टैंडर्ड लाइब्रेरी का न होना रहा है,
00:00:23और BUN इस कमी को दूर कर रहा है, जो आए दिन होने वाले सप्लाई चेन हमलों की दुनिया में एक बहुत अच्छा कदम है।
00:00:30सबसे पहले, हम Playwright और Puppeteer को अनइंस्टॉल करके उसकी जगह BUN WebView का इस्तेमाल कर सकते हैं।
00:00:37यहाँ दिए गए इस कोड से, मैं एक हेडलेस ब्राउज़र को नियंत्रित कर सकता हूँ, सब्सक्राइब बटन ढूँढ सकता हूँ और उस पर क्लिक कर सकता हूँ,
00:00:41हालाँकि मैं इसे अभी आपकी मशीन पर नहीं चला सकता, इसलिए आपको मेरे लिए सब्सक्राइब पर क्लिक करना होगा।
00:00:44क्लिक, टाइप, प्रेस और स्क्रॉल जैसे सभी इनपुट तरीके नेटिव ब्राउज़र इवेंट्स को ट्रिगर करते हैं,
00:00:48इसलिए पेज को यह सोचना चाहिए कि आप एक असली यूजर हैं। Mac पर, यह सिस्टम के webkit का इस्तेमाल करता है,
00:00:52यानी Safari के इंजन का, जिसका मतलब है कि कुछ भी इंस्टॉल करने की जरूरत नहीं है, लेकिन अगर आप क्रोम इंस्टेंस चाहते हैं,
00:00:56तो आप backend विकल्प को Chrome पर सेट कर सकते हैं, और इससे पहले से इंस्टॉल Chrome या Chromium इंस्टेंस का इस्तेमाल होगा,
00:01:01जो आप तब करेंगे जब आप Windows या Linux का उपयोग कर रहे हों। यह वास्तव में एक हेडलेस क्रोम
00:01:04सबप्रोसेस चला सकता है, या यह पहले से चल रहे क्रोम इंस्टेंस से कनेक्ट हो सकता है, इसलिए यहाँ दिए गए इस कोड का उपयोग करके,
00:01:09मैं अपने Mac पर खुले हुए क्रोम वर्शन को चला सकता हूँ, वो भी पूरी तरह से BUN से। इसके अलावा,
00:01:13आप पेज पर जावास्क्रिप्ट चलाने के लिए Evaluate का भी उपयोग कर सकते हैं, और नेटिव
00:01:17जावास्क्रिप्ट वैल्यू के रूप में परिणाम प्राप्त कर सकते हैं, और यदि आपके किसी मनचाه फीचर के लिए कोई API नहीं है, तो आप
00:01:21रॉ CDP कमांड्स पर जा सकते हैं। मैं देख सकता हूँ कि यह कुछ हल्के-फुल्के ब्राउज़र ऑटोमेशन के लिए काफी अच्छा है,
00:01:25मुझे नहीं लगता कि यह अभी Playwright की पूरी तरह से जगह लेता है, इसमें टेस्ट रनर या ट्रेस व्यूअर नहीं है,
00:01:29लेकिन स्क्रैपिंग या कंप्यूटर यूज़ स्क्रिप्ट्स जैसी चीज़ों के लिए, यह कोई बुरा विकल्प नहीं है।
00:01:32अगला, आइए Sharp को अनइंस्टॉल करें और उसकी जगह BUN.image का इस्तेमाल करें। यह एक पूर्ण इमेज लाइब्रेरी है,
00:01:37जो हमें एक फाइल लेने, उस पर .image कॉल करने, और फिर रिसाइज करने, घुमाने जैसे ऑपरेशंस को चेन करने देती है,
00:01:42फ्लिप करने, फ्लॉप करने, चमक (brightness) बदलने, तीखापन (sharpness) बदलने, और इसे ढेरों अलग-अलग
00:01:46इमेज फॉर्मेट में बदलने की अनुमति देती है। यह आपको पिक्सेल डेटा को डिकोड किए बिना चौड़ाई, ऊँचाई और फॉर्मेट
00:01:50जैसी मेटाडेटा पढ़ने की भी सुविधा देता है। एक और बेहतरीन विकल्प जो मुझे वाकई बहुत पसंद आया है, वह है
00:01:54प्लेसहोल्डर इमेज बनाने की क्षमता। यह कम क्वालिटी वाला वर्जन है जिसे असली इमेज लोड होने से पहले आप HTML में इनलाइन कर सकते हैं।
00:01:59BUN.image उन फीचर्स में से एक है जिसके इस्तेमाल को लेकर मैं सबसे ज्यादा उत्साहित हूँ क्योंकि मुझे पहले
00:02:04डिप्लॉयमेंट और बिल्ड के दौरान Sharp से जुड़ी समस्याएं आ चुकी हैं। अब अगर मैं BUN का उपयोग करता हूँ,
00:02:08तो मुझे इसके बारे में सोचने की जरूरत नहीं है। मुझे अब Marked के बारे में भी सोचने की जरूरत नहीं है क्योंकि हम अब
00:02:12मार्कडाउन को पार्स करने के लिए बस BUN.markdown का उपयोग कर सकते हैं। इसमें केवल तीन API हैं।
00:02:16BUN.markdown.html मार्कडाउन को HTML स्ट्रिंग में रेंडर करता है। BUN.markdown.render मार्कडाउन को प्रत्येक
00:02:22एलिमेंट के लिए कस्टम कॉलबैक के साथ रेंडर करता है। इससे आपको कस्टम क्लास के साथ HTML रेंडर करने की फ्लेक्सिबिलिटी मिलती है,
00:02:27ANSI टर्मिनल आउटपुट, या कोई अन्य स्ट्रिंग फॉर्मेट। BUN.markdown.react मार्कडाउन को React.jsx में रेंडर करता है,
00:02:33और यह आपको प्रत्येक एलिमेंट के लिए अपनी पसंद का कोई भी कंपोनेंट पास करने की भी अनुमति देता है, जिससे आप बेहद
00:02:37अच्छी तरह से स्टाइल किया हुआ मार्कडाउन प्राप्त कर सकते हैं। इसमें कई ऐसे विकल्प भी हैं जिन्हें आप अपनी जरूरत के अनुसार
00:02:41मार्कडाउन फीचर्स को नियंत्रित करने के लिए टॉगल कर सकते हैं। आप गिटहब फॉर्मेटेड टेबल्स, ऑटो लिंक्स जैसी चीजें रख सकते हैं,
00:02:45हेडिंग आईडी और विकी लिंक्स, हालांकि एक चेतावनी जो वे बताते हैं वह यह है कि HTML आउटपुट सैनिटाइज नहीं किया जाता है,
00:02:50इसलिए रॉ HTML, इवेंट हेडर एट्रीब्यूट्स, जावास्क्रिप्ट, ये सभी सीधे पास हो जाते हैं, इसलिए यदि आप
00:02:54यूजर्स द्वारा लिखे गए मार्कडाउन को रेंडर कर रहे हैं, तो उसे हल करना अभी भी आपकी ही जिम्मेदारी है। इसके बावजूद, आजकल बहुत
00:02:59सारा मार्कडाउन जनरेट हो रहा है जिसे देखते हुए यह मुझे एक काफी अच्छा एडिशन लगता है। आगे बढ़ते हुए, आप
00:03:03अब Node.pty को अनइंस्टॉल कर सकते हैं। BUN.terminal आपको एक इन-बिल्ट स्यूडो टर्मिनल देता है, जिससे आप जावास्क्रिप्ट से
00:03:08Bash, Vim या HTOP चला सकते हैं। यदि आपने कभी किसी इलेक्ट्रॉन ऐप के अंदर टर्मिनल शिप करने की कोशिश की है,
00:03:12तो आप उसकी परेशानी जानते हैं। यह असल में BUN.spawn में एक नया एडिशन है। आप इसे टर्मिनल विकल्प पास करते हैं और यह
00:03:17एक स्यूडो टर्मिनल से जुड़े सबप्रोसेस को स्पॉन करता है। सबप्रोसेस को एक वास्तविक टर्मिनल दिखाई देता है, जो
00:03:22रंग-बिरंगे आउटपुट, कर्सर मूवमेंट और इंटरैक्टिव प्रॉम्प्ट्स को सक्षम बनाता है, और एक बार जब आपके पास टर्मिनल आ जाता है, तो आप
00:03:26उस टर्मिनल में डेटा लिख सकते हैं, टर्मिनल का आकार बदल सकते हैं, टर्मिनल बंद कर सकते हैं और बहुत कुछ कर सकते हैं। आप अपना खुद का
00:03:31टर्मिनल भी बना सकते हैं, जिससे आप इसे सबप्रोसेस में दोबारा इस्तेमाल कर सकते हैं। मैं इन सभी फीचर्स में एक पैटर्न देखना शुरू कर रहा हूँ।
00:03:35वे ऐसी चीजें लगती हैं जिनका इस्तेमाल Claude Code करता होगा, इसलिए काश वे उसे ओपन-सोर्स कर देते
00:03:39ताकि हम इन फीचर्स को बड़े पैमाने पर इस्तेमाल होते हुए देख पाते। अगली डिपेंडेंसी जिसे हम
00:03:43अनइंस्टॉल कर रहे हैं वह Node.cron है, क्योंकि अब हम केवल BUN.cron का उपयोग कर सकते हैं। यदि आप इसे कोई फंक्शन पास करते हैं,
00:03:47तो यह बिना किसी सिस्टम क्रॉन के सीधे इवेंट लूप पर चलेगा, लेकिन यदि आप इसे कोई स्क्रिप्ट पास करते हैं,
00:03:51तो यह OS-level की क्रॉन जॉब रजिस्टर करेगा जो वास्तव में Linux पर crontab, macOS पर launchd,
00:03:56और Windows पर टास्क शेड्यूलर का उपयोग करती है। आप मानक क्रॉन सिंटैक्स का उपयोग कर सकते हैं, जिसमें नाम वाले दिन और daily जैसे हेल्पर्स शामिल हैं,
00:04:01और यह उस क्रॉन सिंटैक्स को पार्स करने का भी समर्थन करता है, जो सिस्टम के स्थानीय समय क्षेत्र में अगली मेल खाने वाली तारीख लौटाएगा।
00:04:05और समय क्षेत्रों की बात करें तो, डिफ़ॉल्ट रूप से सभी जॉब्स स्थानीय समय में चलती हैं,
00:04:11लेकिन इसमें इसे बदलने के लिए स्पष्ट विकल्प हैं, ताकि आप आश्वस्त हो सकें कि यह कब चलने वाला है।
00:04:15मेरे शेड्यूल में अगला काम आपको concurrently या npm run all को अनइंस्टॉल करने के लिए कहना है, क्योंकि अब BUN के पास
00:04:20अपना खुद का parallel विकल्प है। इस फ्लैग का उपयोग करने से आप एक साथ कई package.json स्क्रिप्ट चला सकते हैं,
00:04:24और आउटपुट के आगे उस स्क्रिप्ट का नाम लिखा होता है जिससे वह आया है। यह आपको स्क्रिप्ट के नामों के लिए ग्लोब मैच
00:04:28का उपयोग करने की अनुमति भी देता है, इसमें आपके वर्कस्पेस के भीतर किस पैकेज में कमांड चलानी है, इसके लिए एक फिल्टर है,
00:04:32और इसमें एक विकल्प भी है जो अन्य स्क्रिप्ट्स को चालू रखने देता है यदि उनमें से किसी में त्रुटि आ जाए। यह सिर्फ
00:04:37concurrent नहीं होना चाहिए, आप समान प्रीफ़िक्स वाले आउटपुट और फ़िल्टरिंग के साथ एक-एक करके स्क्रिप्ट चलाने के लिए sequential का भी उपयोग कर सकते हैं।
00:04:41यह शायद वह फीचर है जिसे मैं खुद सबसे ज्यादा इस्तेमाल करते हुए देखता हूँ। हमारी अगली अनइंस्टॉल
00:04:45कोई भी tar आर्काइव लाइब्रेरी है। BUN.archive tar और gzip का एक तेज नेटिव इम्प्लीमेंटेशन है।
00:04:50इसे बनाना एक ऐसा ऑब्जेक्ट है जहाँ की (keys) पाथ हैं और वैल्यू कंटेंट्स हैं, और कंटेंट्स
00:04:55स्ट्रिंग, ब्लॉब, UIN8 ऐरे, या ऐरे बफर से लेकर कुछ भी हो सकते हैं। संपीड़न (compression) के लिए,
00:05:00आप gzip पर सेट compress विकल्प का भी उपयोग कर सकते हैं, और 1 से 12 तक का स्तर चुन सकते हैं। जाहिर है कि आप
00:05:05फिर इन्हें ग्लोब पैटर्न जैसे विकल्पों के साथ निकाल सकते हैं ताकि केवल विशिष्ट फाइलें निकाली जा सकें, और एक फीचर जिसे मैं वास्तव में
00:05:10पसंद करता हूँ वह यह है कि आप किसी आर्काइव को बिना निकाले पढ़ सकते हैं। यहाँ दिया गया यह कोड npm
00:05:14रजिस्ट्री से lodash खींच सकता है और बिना एक भी फाइल निकाले उसका package.json पढ़ सकता है। अब तक हमने
00:05:19लगभग 7 npm पैकेजों की जरूरत को खत्म कर दिया है, और अभी और भी बाकी हैं, हालांकि ये छोटे फीचर्स हैं इसलिए हम
00:05:24इन्हें तेजी से पूरा कर सकते हैं। सबसे पहले, BUN.serve अब स्टैटिक फाइलें सर्व कर सकता है, जिससे serve static की जरूरत
00:05:28खत्म हो जाती है, और यह आपकी वेबसाइट के उस पब्लिक फोल्डर के लिए बहुत बढ़िया है। दूसरा, BUN ने
00:05:33JSON5 और XML के लिए समर्थन जोड़ा है, ताकि आपको उनके पैकेजों की अब आवश्यकता न पड़े। आप BUN में दोनों
00:05:38फॉर्मेट्स को इम्पोर्ट, पार्स और स्ट्रिंगीफाई कर सकते हैं। आखिरी तीन टर्मिनल के लिए हेल्पर्स हैं। हमारे पास BUN.sliceansy, BUN.wrapansy,
00:05:43और BUN.stringwidth हैं, जो आपको टर्मिनल कॉलम के हिसाब से स्लाइसिंग, रैपिंग और माप देते हैं,
00:05:47जो sliceansy, CLI truncate, wrapansy, और stringwidth जैसे पैकेजों की आवश्यकता को प्रतिस्थापित करते हैं।
00:05:52कुल मिलाकर, लगभग 15 पैकेज जा चुके हैं, और मैंने इस रिलीज का केवल आधा हिस्सा ही कवर किया है।
00:05:56इस ब्लॉग पोस्ट का सार यह है कि बहुत सी चीजें तेज हो गई हैं, CPU का उपयोग सुधर गया है, स्टार्टअप
00:06:01तेज हो गया है, और इन सभी फीचर्स के बावजूद, बाइनरी 17% छोटी हो गई है। ओह, और यह Rust में लिखा गया है।
00:06:06उल्लेख करने लायक एक बोनस फीचर यह है कि BUN.install को एक ग्लोबल वर्चुअल स्टोर मिल गया है।
00:06:10यदि आप आइसोलेटेड लिंकर को सक्षम करते हैं, तो पैकेज आपकी मशीन पर एक बार निकाले जाते हैं और आपके
00:06:14node_modules से सिमलंक किए जाते हैं, बजाए इसके कि उन्हें हर एक प्रोजेक्ट में अलग से कॉपी किया जाए। इससे
00:06:19यह तेज हो जाना चाहिए और यदि आपके पास ढेरों प्रोजेक्ट हैं तो जगह भी बचाएगा। तो अब BUN के बारे में आपकी क्या राय है?
00:06:23क्या आप इसका उपयोग करते हैं? क्या आप इनमें से किसी भी फीचर का उपयोग करेंगे? मुझे नीचे कमेंट सेक्शन में बताएं,
00:06:27वहाँ रुकें, सब्सक्राइब करें, और हमेशा की तरह, अगले वीडियो में मिलते हैं।
00:06:36मैं आपसे अगली बार मिलूँगा।

핵심 요약

BUN 1.4 अपडेट ने स्टैंडर्ड लाइब्रेरी में हेडलेस ब्राउज़र, इमेज प्रोसेसिंग और क्रॉन जॉब जैसे इन-बिल्ट फीचर्स जोड़कर 15 से अधिक बाहरी npm डिपेंडencies की आवश्यकता को समाप्त कर दिया है।

하이라이트

  • BUN 1.4 अपडेट रस्ट में लिखा गया है और इसके साथ ही बाइनरी का आकार 17% छोटा हो गया है।

  • BUN WebView प्लेराइट और प्यूपिटियर जैसे टूल्स की जगह सीधे हेडलेस ब्राउज़र को नियंत्रित करने की अनुमति देता है।

  • BUN.image एक पूर्ण इमेज लाइब्रेरी है जो शार्प (Sharp) पैकेज की जरूरत को पूरी तरह समाप्त कर देती है।

  • BUN.markdown मार्कडाउन को सीधे HTML या React.jsx में रेंडर करने के लिए तीन इन-बिल्ट API प्रदान करता है।

  • BUN.cron सिस्टम क्रॉन का उपयोग किए बिना सीधे इवेंट लूप या OS-level पर क्रॉन जॉब रजिस्टर करता है।

  • BUN 1.4 के इन-बिल्ट स्टैंडर्ड लाइब्रेरी फीचर्स से डेवलपर्स लगभग 15 अलग-अलग npm डिपेंडencies को अनइंस्टॉल कर सकते हैं।

타임라인

BUN 1.4 अपडेट और वेबव्यू

  • BUN 1.4 अपडेट को रस्ट में फिर से लिखा गया है जिससे बाइनरी साइज 17% कम हो गया है।
  • BUN WebView प्लेराइट और प्यूपिटियर पैकेजों के विकल्प के रूप में काम करता है।
  • यह मैक पर वेबकिट का उपयोग करता है और विंडोज या लिनक्स के लिए क्रोम या क्रोमियम इंस्टेंस से कनेक्ट हो सकता है।

रस्ट में रीराइट किए गए BUN 1.4 में कई नए स्टैंडर्ड लाइब्रेरी फीचर्स जोड़े गए हैं जो डेवलपर्स की कई डिपेंडencies को हटाते हैं। इसमें शामिल BUN WebView से डेवलपर्स नेटिव ब्राउज़र इवेंट्स को ट्रिगर कर सकते हैं और हल्के ब्राउज़र ऑटोमेशन तथा स्क्रैपिंग के लिए इसका उपयोग कर सकते हैं।

इमेज प्रोसेसिंग और मार्कडाउन पार्सिंग

  • BUN.image शार्प (Sharp) लाइब्रेरी की जगह लेकर इमेज रिसाइजिंग, फॉर्मेट बदलने और मेटाडेटा पढ़ने की सुविधा देता है।
  • BUN.markdown मार्कडाउन को HTML स्ट्रिंग या React.jsx में आसानी से रेंडर करता है।
  • मार्कडाउन आउटपुट डिफ़ॉल्ट रूप से सैनिटाइज नहीं होता है इसलिए यूजर्स इनपुट के लिए सावधानी जरूरी है।

BUN.image फाइल पिक्सेल डेटा को डिकोड किए बिना चौड़ाई और ऊँचाई जैसे मेटाडेटा पढ़ने और प्लेसहोल्डर इमेज बनाने की अनुमति देता है। इसके अलावा, BUN.markdown के जरिए Marked पैकेज की जरूरत खत्म हो जाती है क्योंकि यह मार्कडाउन को सीधे कस्टम कॉलबैक और रिएक्ट कंपोनेंट्स के साथ रेंडर कर सकता है।

स्यूडो-टर्मिनल और क्रॉन जॉब्स

  • BUN.terminal जावास्क्रिप्ट से Bash, Vim या HTOP चलाने के लिए एक इन-बिल्ट स्यूडो टर्मिनल प्रदान करता है।
  • BUN.cron बिना किसी बाहरी सिस्टम क्रॉन के सीधे इवेंट लूप या OS-level क्रॉन जॉब रजिस्टर करता है।
  • BUN का नया parallel विकल्प एक साथ कई package.json स्क्रिप्ट्स को आउटपुट नाम के साथ चलाने की अनुमति देता है।

Node.pty और Node.cron पैकेजों को अब BUN.terminal और BUN.cron से बदला जा सकता है। BUN.cron मानक क्रॉन सिंटैक्स को पार्स करता है और स्थानीय समयानुसार जॉब्स को शेड्यूल करता है। साथ ही, parallel और sequential फ्लैग्स concurrently या npm run all की आवश्यकता को समाप्त कर देते हैं।

आर्काइव, स्टैटिक फाइलें और अन्य टूल्स

  • BUN.archive tar और gzip का एक तेज़ नेटिव इम्प्लीमेंटेशन है जो आर्काइव को बिना निकाले पढ़ने की अनुमति देता है।
  • BUN.serve अब स्टैटिक फाइलें सीधे सर्व कर सकता है और JSON5 तथा XML को सपोर्ट करता है।
  • BUN.install में एक ग्लोबल वर्चुअल स्टोर और आइसोलेटेड लिंकर जोड़ा गया है जो डिस्क स्पेस बचाता है।

BUN 1.4 ने tar आर्काइव, JSON5 और XML पार्सिंग के लिए नेटिव सपोर्ट जोड़कर कई छोटे पैकेजों को हटा दिया है। टर्मिनल हेल्पर्स जैसे sliceansy और wrapansy भी अब इसमें शामिल हैं। कुल मिलाकर लगभग 15 पैकेज हटाए जा चुके हैं जिससे स्टार्टअप तेज़ होता है और सीपीयू उपयोग सुधरता है।

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기