<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>JavaScript | The .NET Blog</title><link>https://thedotnetblog.com/hi/tags/javascript/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>hi</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Fri, 24 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/hi/tags/javascript/index.xml" rel="self" type="application/rss+xml"/><item><title>Aspire 13.2 में Bun, बेहतर कंटेनर, और कम डिबगिंग झंझट</title><link>https://thedotnetblog.com/hi/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/hi/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 Vite ऐप्स के लिए Bun का प्रथम-श्रेणी समर्थन जोड़ता है, Yarn की विश्वसनीयता सुधारता है, और ऐसे कंटेनर सुधार लाता है जो स्थानीय विकास के व्यवहार को ज़्यादा सटीक बनाते हैं। यहाँ असल में क्या बदला और क्यों मायने रखता है।</description><content:encoded>&lt;p&gt;&lt;em&gt;यह पोस्ट स्वचालित रूप से अनुवादित की गई है। मूल संस्करण के लिए, &lt;a href="https://thedotnetblog.com/hi/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;यहाँ क्लिक करें&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;अगर आप Aspire में .NET बैकएंड और JavaScript फ्रंटएंड बना रहे हैं, तो 13.2 वह अपडेट है जो चुपचाप आपका दिन बेहतर कर देता है। कोई चमकदार नए paradigm नहीं। बस उन चीज़ों में ठोस सुधार जो थोड़ी परेशान करने वाली थीं।&lt;/p&gt;
&lt;p&gt;चलो देखते हैं असल में क्या आया।&lt;/p&gt;
&lt;h2 id="bun-अब-परथम-शरण-क-नगरक-ह"&gt;Bun अब प्रथम-श्रेणी का नागरिक है&lt;/h2&gt;
&lt;p&gt;सबसे बड़ी खबर: Aspire में Vite ऐप्स के लिए Bun समर्थन। एक fluent call, और काम खत्म।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// TypeScript AppHost
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withBun&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;अगर आपकी टीम पहले से Bun इस्तेमाल करती है — और शायद करती भी है, क्योंकि इसकी install time बहुत तेज़ है और startup भी कहीं ज़्यादा तेज़ होता है — तो Aspire अब आपको धारा के खिलाफ नहीं धकेलता। पहले Aspire npm मानकर चलता था और आपको workaround करना पड़ता था। अब &lt;code&gt;.withBun()&lt;/code&gt; &lt;code&gt;.withYarn()&lt;/code&gt; और डिफ़ॉल्ट npm behavior के साथ एक first-class विकल्प है।&lt;/p&gt;
&lt;p&gt;यह क्यों मायने रखता है? क्योंकि JavaScript tooling की गति सीधे आपके inner dev loop को प्रभावित करती है। अगर हर बार नया environment उठाने पर आपका frontend dependencies install करने में 30 सेकंड लेता है, तो वह जोड़ता जाता है। Bun इसे काफ़ी हद तक घटा देता है।&lt;/p&gt;
&lt;p&gt;अगर आप C# में author करना पसंद करते हैं, तो C# AppHost equivalent &lt;a href="https://aspire.dev/integrations/frameworks/javascript/#use-bun"&gt;aspire.dev&lt;/a&gt; पर documented हैं — वही patterns लागू होते हैं।&lt;/p&gt;
&lt;h2 id="yarn-अब-और-वशवसनय-ह"&gt;Yarn अब और विश्वसनीय है&lt;/h2&gt;
&lt;p&gt;Bun headlines ले जाता है, लेकिन Yarn users को भी कुछ शायद और महत्वपूर्ण मिलता है: कम mysterious failures. Aspire 13.2 &lt;code&gt;addViteApp()&lt;/code&gt; के साथ &lt;code&gt;withYarn()&lt;/code&gt; की reliability बेहतर करता है।&lt;/p&gt;
&lt;p&gt;ऐसे fixes तब तक exciting नहीं लगते जब तक आपने 20 मिनट यह पता लगाने में न बिताए हों कि Yarn-backed frontend resource start क्यों नहीं हो रहा था। इसे fixed मानिए।&lt;/p&gt;
&lt;h2 id="ऐस-कटनर-publishing-जस-आप-सच-म-समझ-सक"&gt;ऐसा कंटेनर publishing जिसे आप सच में समझ सकें&lt;/h2&gt;
&lt;p&gt;दो container improvements जानने लायक हैं:&lt;/p&gt;
&lt;h3 id="explicit-pull-policy"&gt;Explicit Pull Policy&lt;/h3&gt;
&lt;p&gt;Docker Compose publishing अब &lt;code&gt;PullPolicy&lt;/code&gt; support करता है, जिसमें &lt;code&gt;Never&lt;/code&gt; option भी शामिल है:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ImagePullPolicy&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;./.modules/aspire.js&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addDockerComposeEnvironment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;compose&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;worker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addContainer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;worker&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;myorg/worker:latest&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withImagePullPolicy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ImagePullPolicy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Never&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;यह वह workflow है जो कहता है, “मैंने जो image पहले ही build कर ली है, वही इस्तेमाल करो और registry को बीच में मत लाओ।” यह तब बहुत उपयोगी है जब आप locally images पर iterate कर रहे हों जिन्हें आप manually build और publish करते हैं, या जब आपका CI एक image बनाता है और आप चाहते हैं कि Compose बिल्कुल उसी image का उपयोग करे, बिना किसी remote pull के।&lt;/p&gt;
&lt;h3 id="postgresql-18-volumes-फर-स-कम-करत-ह"&gt;PostgreSQL 18+ Volumes फिर से काम करते हैं&lt;/h3&gt;
&lt;p&gt;PostgreSQL 18 ने अपनी internal data directory layout बदल दी। इससे Aspire में volume mapping silently टूट गई — आपका data volume setup हो जाता था, लेकिन persistence सही तरीके से काम नहीं करती थी। 13.2 यह ठीक करता है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;postgres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addPostgres&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;postgres&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withDataVolume&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;isReadOnly&lt;/span&gt;: &lt;span class="kt"&gt;false&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;अगर आप PostgreSQL 18 या उससे नए version के साथ data volume चला रहे हैं, तो Aspire 13.2 पर अपडेट करिए और फिर इसके बारे में दोबारा मत सोचिए।&lt;/p&gt;
&lt;h2 id="debugging-क-quality-of-life-improvements"&gt;Debugging की quality-of-life improvements&lt;/h2&gt;
&lt;p&gt;कुछ चीज़ें जो AppHost session को step through करते समय कम frustrating बनाती हैं:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Core types पर &lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt;&lt;/strong&gt; — &lt;code&gt;DistributedApplication&lt;/code&gt;, resources, और endpoint expressions अब debugger में useful values दिखाते हैं, object trees में गहराई तक जाने की ज़रूरत नहीं&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;बेहतर &lt;code&gt;WaitFor&lt;/code&gt; failure messages&lt;/strong&gt; — जब resources start होने में fail होते हैं, error context अब सच में मददगार है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; सही समय पर fire होता है&lt;/strong&gt; — सिर्फ़ तब जब कोई resource वास्तव में start हो रहा हो, न कि unrelated state transitions पर&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;launchSettings.json&lt;/code&gt; ज़्यादा resilient है&lt;/strong&gt; — malformed setting के चलते dev startup के corrupt होने की संभावना कम&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;इनमें से कोई भी improvement अकेले में बहुत बड़ा नहीं है, लेकिन मिलकर debugging experience की friction कम करते हैं। अगर आपने कभी Aspire resource object के भीतर तीन level तक उतरकर यह पता लगाया हो कि वह कौन सा endpoint इस्तेमाल कर रहा है, तो सिर्फ़ debugger display improvement ही update के लायक है।&lt;/p&gt;
&lt;h2 id="समपन"&gt;समापन&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 एक focused quality release है। Bun support headline है, लेकिन container और debugging improvements वही चीज़ें हैं जो रोज़मर्रा के काम को आसान बनाएँगी। अपडेट करना क़ाबिल-ए-गौर है — खासकर अगर आप PostgreSQL 18 के साथ data volumes इस्तेमाल कर रहे हैं।&lt;/p&gt;
&lt;p&gt;पूरा विवरण &lt;a href="https://devblogs.microsoft.com/aspire/aspire-bun-support-and-container-enhancements/"&gt;David Pine की original post&lt;/a&gt; और &lt;a href="https://aspire.dev/whats-new/aspire-13-2/"&gt;Aspire 13.2 whats new docs&lt;/a&gt; में है।&lt;/p&gt;</content:encoded></item></channel></rss>