MapConductor React SDK का संस्करण 0.2.0 हो गया है। npm पर 21 पैकेज हैं, सभी Apache-2.0 हैं।
@mapconductor/react-for-openlayers केवल 0.2.1 पर है, कारण अंत में लिखा है।
क्या बदला
- सभी पैकेजों के संस्करणों को मिलाया गया। आंतरिक
@mapconductor/*निर्भरता रेंज को भी एक साथ अपडेट किया गया है, ताकि अनपेक्षित संस्करण मिश्रण न हो। @mapconductor/react-geo-layerका नाम बदलकर@mapconductor/react-geoकर दिया गया। केवल पैकेज का नाम बदला है,GeoJSONLayer,GeoJSONLayerState,GeoJSONParserआदि API वही रहे हैं। पुराना पैकेज 0.1.3 के रूप में npm पर रहेगा, लेकिन भविष्य में कोई अपडेट नहीं होगा।- 4 पैकेज पहली बार प्रकाशित किए गए।
react-for-arcgis,react-for-mappls,react-geo,react-kmlहैं। react-for-mapkitमें सामग्री जोड़ी गई। 0.1.3 में केवल LICENSE और README शामिल थे। बिल्ड लक्ष्य सूची से छूट गया था, औरfiles: ["dist"]किसी से भी मेल नहीं खाता था। यदि आप 0.1.3 का उपयोग कर रहे हैं, तो कृपया अपग्रेड करें।- लाइसेंस पहचानकर्ता को
Apache-2.0में ठीक किया गया। इससे पहले यहApache2था, जो SPDX के रूप में एक अमान्य मान है, और उपकरणों द्वारा इसे "पहचाने न जाने वाला लाइसेंस" के रूप में माना जाता था।
मानचित्र SDK निर्भरताओं को घोषित रेंज के भीतर नवीनतम में अपडेट किया गया है। वास्तव में केवल दो काम किए: maplibre-gl (6.3.0 → 6.4.0) और @turf/turf (7.3.5 → 7.4.0), अन्य पहले से ही नवीनतम थे।
पैकेज और वे मानचित्र SDK जो वे उपयोग करते हैं
3 प्रदाताओं में निर्भरता में मानचित्र SDK नहीं है। ऐसा इसलिए है क्योंकि SDK npm पर वितरित नहीं किए जाते हैं। HERE, Apple MapKit JS, Longdo को रनटाइम पर वेंडर के CDN से लोड किया जाता है, इसलिए वास्तव में काम करने वाला संस्करण वही होगा जो वेंडर प्रदान करता है।
react-for-tomtom को maplibre-gl को 5.x पर ही रखा गया है। ऐसा इसलिए है क्योंकि @tomtom-org/maps-sdk maplibre-gl@^5.24.0 पर निर्भर है, और इसे 6.x पर बढ़ाने से MapLibre के दो संस्करण हो जाएंगे, और हम TomTom SDK को एक ऐसा map ऑब्जेक्ट पास कर देंगे जिसकी उसे अपेक्षा नहीं है।
ESM, CommonJS, SSR
ये पैकेज बंडलर को मानते हैं। Vite, webpack, Next.js, Metro में ये सही ढंग से हल होते हैं, और हमने रिलीज से पहले सभी प्रदाताओं के लिए वास्तविक ब्राउज़र पर रेंडरिंग की पुष्टि की है।
दूसरी ओर, Node के स्वयं के रिज़ॉल्वर को सीधे पढ़ने देने पर ── सादा node, बिना बंडलर के SSR एंट्री, Vitest का node वातावरण आदि ── स्थिति अलग है। ऐसा इसलिए है क्योंकि आधारभूत मानचित्र SDK ब्राउज़र लाइब्रेरी हैं। यह प्रकाशित पैकेजों को एक खाली प्रोजेक्ट में वास्तव में import करके मापने का परिणाम है।
| पैकेज | import | require() | कारण |
|---|---|---|---|
react-for-arcgis | no | no | @arcgis/core/views/MapView imports .css, which Node cannot load. Any map needs MapView, so this cannot be worked around from our side. |
react-for-leaflet | no | no | leaflet touches window while the module is evaluated. |
react-for-azuremaps | no | no | azure-maps-control touches window while the module is evaluated. |
react-for-tomtom | no | no | Reads maplibre-gl/package., which Node will only load with an import attribute. |
react-for-mappls | no | yes | mappls-web-maps is CommonJS, so its named exports cannot be statically analysed by the ESM loader. |
react-for-maplibre | yes | no | maplibre-gl v6 is ESM-only and declares no CommonJS entry. |
react-for-maptiler | yes | no | Same as react-for-maplibre. |
शेष 14 पैकेज दोनों में लोड हो सकते हैं। यह परिणाम 0.1.3 में भी समान था, इसलिए यह 0.2.0 में कोई नई बात नहीं है।
ध्यान देने योग्य दो बातें हैं।
- SSR में, प्रदाताओं को क्लाइंट-साइड पर देर से import करें। ब्राउज़र-विशिष्ट प्रदाताओं को शीर्ष स्तर पर स्थैतिक रूप से import करने से, बिना बंडलर के सर्वर-साइड रेंडरिंग टूट जाएगी। आधिकारिक वेब नमूने
lazy(() => import('./providers/...'))का उपयोग करते हैं, और इसी वजह से Vite का SSR बिल्ड सफल होता है। react-for-maplibre,react-for-maptiler,react-for-tomtomवास्तव में काम न करने वाले CommonJS एंट्री घोषित करते हैं। ऐसा इसलिए है क्योंकिmaplibre-glv6 ने CommonJS छोड़ दिया है। कृपया इन तीनों का उपयोग ESM में करें।exportsसेrequireहटाने का काम भविष्य की रिलीज में किया जाएगा।
एकमात्र जो हमारी तरफ से कारण था
react-for-openlayers Node ESM में लोड नहीं हो पा रहा था, इसका कारण OpenLayers से असंबंधित था। हमारा सोर्स कोड ol/proj को बिना एक्सटेंशन के import कर रहा था, और Node इसे डायरेक्टरी import के रूप में अस्वीकार कर देता है। बंडलर इसे आसानी से पार कर देता है, इसलिए हमें पता नहीं चला। इसे 0.2.1 में ठीक कर दिया गया है। बदलाव केवल इस एक पंक्ति में है, और बंडलर के माध्यम से व्यवहार वही रहता है।
इंस्टॉलेशन
bash npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react @mapconductor/react-for-maplibre
प्रत्येक पैकेज अलग-अलग रिपॉजिटरी में है। कृपया github.com/MapConductor देखें।