10 पॉइंट द्वारा xguru 2024-03-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • भविष्य में Vite में bundler के रूप में इस्तेमाल करने के लिए Rust में लिखा गया JavaScript bundler
  • यह Rollup-संगत API और plugin interface प्रदान करता है, लेकिन इसका दायरा esbuild के अधिक करीब होगा

Rolldown विकसित करने का कारण

  • अभी Vite अंदरूनी तौर पर दो bundler का उपयोग करता है
    • esbuild : dependency pre-bundling, TypeScript / JSX transformation, target lowering और minification के लिए उपयोग होता है
    • Rollup : production build के लिए उपयोग होता है और Rollup-संगत plugin interface को support करता है
  • दोनों bundler बेहतरीन हैं, लेकिन हर एक में दूसरे bundler द्वारा दी जाने वाली कुछ क्षमताओं की कमी है
    • esbuild बहुत तेज़ है और फीचर-समृद्ध भी, लेकिन output, खासकर chunk splitting की सीमाओं के कारण, application bundling के लिए उपयुक्त नहीं है
    • Rollup application bundling के लिए परिपक्व है और वास्तविक उपयोग में परखा जा चुका है, लेकिन native language में compiled bundler की तुलना में काफ़ी धीमा है
  • दो अलग-अलग bundler का उपयोग करना कई मायनों में optimal नहीं है
    • output के बीच सूक्ष्म अंतर के कारण development build और production build के बीच व्यवहार में अंतर आ सकता है
    • user source को production build के दौरान कई tools द्वारा बार-बार parse, transform और serialize किया जाता है, जिससे बहुत सा ऐसा overhead पैदा होता है जिसे टाला जा सकता है
  • आदर्श रूप से, Vite एक ऐसे single bundler का उपयोग कर सके जो native-स्तर की performance, parsing/serialization overhead से बचाने वाले built-in transforms, Rollup-संगत plugin interface, और बड़े applications के लिए उपयुक्त advanced build output control दे सके
  • यही वजह है कि हम Rolldown बना रहे हैं
    • Rolldown Rust में लिखा गया है और फिलहाल Oxc के ऊपर बनाया गया है, जो उसके parser और resolver का उपयोग करता है. आगे चलकर Oxc के transformer और minifier उपलब्ध होने पर उनका उपयोग करने की भी योजना है
    • दीर्घकालिक लक्ष्य यह है कि Vite उपयोगकर्ता (frameworks के माध्यम से प्रत्यक्ष या अप्रत्यक्ष रूप से) बहुत कम friction के साथ ऐसे Vite version पर जा सकें जो अंदरूनी तौर पर Rolldown का उपयोग करे
    • साथ ही, Rolldown को standalone bundler के रूप में भी सीधे इस्तेमाल किया जा सकेगा

Rollup संगतता और अंतर

  • Rolldown का लक्ष्य Rollup के API और plugin interface के साथ जितना संभव हो उतना मेल रखना है, ताकि इसे अपनाना आसान हो
  • सरल उपयोग मामलों में यह Rollup के विकल्प के रूप में काम कर सकता है. लेकिन edge cases, खासकर जहाँ advanced options शामिल हों, वहाँ कुछ अंतर हो सकते हैं
  • शुरुआत JS से Rust में port करने के इरादे से हुई थी, लेकिन जल्द ही यह महसूस हुआ कि सर्वोत्तम performance पाने के लिए कोड को Rust के काम करने के तरीके के अनुसार लिखना प्राथमिकता होनी चाहिए
  • Rolldown की internal architecture, Rollup की तुलना में esbuild के अधिक करीब है, और chunk splitting logic भी Rollup से अलग हो सकती है
  • Rolldown का दायरा भी Rollup से व्यापक और esbuild के अधिक समान है. CommonJS support और node_modules resolution डिफ़ॉल्ट रूप से दिए जाते हैं, और भविष्य में TypeScript / JSX transformation तथा minification भी support किए जाएंगे

1 टिप्पणियां

 
[यह टिप्पणी छिपाई गई है.]