React SDK 0.2.0 — 21 pakki, endurnefning, og hvað hleðst ekki utan pakkara

21 pakki á npm í einni útgáfu, react-geojson-layer endurnefndur, react-for-mapkit lagfærður, og nákvæmlega hvað hleðst og hvað hleðst ekki utan pakkara.

MapConductor React SDK er komið í 0.2.0. 21 pakki á npm, allir undir Apache-2.0. Aðeins @mapconductor/react-for-openlayers er á 0.2.1; ástæðan kemur í lokin.

Hvað breyttist

  • Allir pakkar fengu sömu útgáfu. Innri @mapconductor/* viðfangasvið voru færð um leið, svo óviljandi blanda af útgáfum kemur ekki upp.
  • @mapconductor/react-geojson-layer var endurnefndur @mapconductor/react-geojson. Aðeins pakkaheitið breyttist; API-in — GeoJSONLayer, GeoJSONLayerState, GeoJSONParser og félagar — eru óbreytt. Gamli pakkinn stendur áfram á npm í 0.1.3 en fær engar frekari uppfærslur.
  • Fjórir pakkar komu út í fyrsta sinn: react-for-arcgis, react-for-mappls, react-geojson og react-kml.
  • react-for-mapkit inniheldur loksins kóða. Útgáfa 0.1.3 hafði aðeins LICENSE og README. Hann hafði fallið út af smíðalistanum, svo files: ["dist"] passaði við ekki neitt. Notirðu 0.1.3 skaltu uppfæra.
  • Leyfisauðkennið var lagfært í Apache-2.0. Fram að því stóð þar Apache2, sem er ógilt SPDX-gildi, og verkfæri töldu leyfið óþekkjanlegt.

Viðföng korta-SDK-anna voru uppfærð í það nýjasta innan uppgefins sviðs. Aðeins tvennt hreyfðist í raun: maplibre-gl (6.3.0 → 6.4.0) og @turf/turf (7.3.5 → 7.4.0); annað var þegar á nýjustu útgáfu.

Pakkarnir og korta-SDK hvers þeirra

PakkiÚtgáfaKorta-SDKGeymsla
@mapconductor/js-sdk-core0.2.0js-sdk-core
@mapconductor/js-sdk-react0.2.0js-sdk-react
@mapconductor/react-for-arcgis0.2.0@arcgis/core ^5.1.16react-for-arcgis
@mapconductor/react-for-azuremaps0.2.0azure-maps-control ^3.7.0react-for-azuremaps
@mapconductor/react-for-cesium0.2.0cesium ^1.131.0react-for-cesium
@mapconductor/react-for-googlemaps0.2.0@googlemaps/js-api-loader ^2.1.1react-for-googlemaps
@mapconductor/react-for-here0.2.0CDN (global H)react-for-here
@mapconductor/react-for-leaflet0.2.0leaflet ^1.9.4react-for-leaflet
@mapconductor/react-for-longdo0.2.0CDN (api.longdo.com/map3)react-for-longdo
@mapconductor/react-for-mapbox0.2.0mapbox-gl ^3.15.0react-for-mapbox
@mapconductor/react-for-mapkit0.2.0CDN (cdn.apple-mapkit.com)react-for-mapkit
@mapconductor/react-for-maplibre0.2.0maplibre-gl ^6.0.0react-for-maplibre
@mapconductor/react-for-mappls0.2.0mappls-web-maps ^3.8.1react-for-mappls
@mapconductor/react-for-maptiler0.2.0maplibre-gl ^6.0.0react-for-maptiler
@mapconductor/react-for-openlayers0.2.1ol ^10.2.1react-for-openlayers
@mapconductor/react-for-tomtom0.2.0@tomtom-org/maps-sdk ^0.51.0, maplibre-gl ^5.24.0react-for-tomtom
@mapconductor/react-geojson0.2.0react-geojson
@mapconductor/react-heatmap0.2.0react-heatmap
@mapconductor/react-icons0.2.0react-icons
@mapconductor/react-kml0.2.0react-kml
@mapconductor/react-marker-clustering0.2.0react-marker-clustering

Þrír þjónustuaðilar bera ekkert korta-SDK sem viðfang, af því SDK-in eru ekki gefin út á npm. HERE, Apple MapKit JS og Longdo hlaðast á keyrslutíma frá CDN framleiðandans, svo útgáfan sem raunverulega keyrir er sú sem framleiðandinn ber fram.

Aðeins react-for-tomtom heldur maplibre-gl á 5.x. @tomtom-org/maps-sdk reiðir sig á maplibre-gl@^5.24.0, og að fara í 6.x setti tvö eintök af MapLibre inn og léti TomTom-SDK-ið fá kortahlut sem það gerir ekki ráð fyrir.

ESM, CommonJS og teiknun á þjóni

Þessir pakkar gera ráð fyrir pakkara. Í Vite, webpack, Next.js og Metro leysast þeir rétt, og fyrir hvern þjónustuaðila var teiknun staðfest í raunverulegum vafra fyrir útgáfu.

Öðru máli gegnir þegar leysarinn í Node sjálfum les þá beint — bert node, teiknun á þjóni sem fer ekki gegnum pakkara, node-umhverfi Vitest og þess háttar. Ástæðan er sú að undirliggjandi korta-SDK eru vafrasöfn. Taflan hér að neðan er mæld með því að flytja útgefnu pakkana raunverulega inn í tómt verkefni.

Pakkiimportrequire()Ástæða
react-for-arcgisnono@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-leafletnonoleaflet touches window while the module is evaluated.
react-for-azuremapsnonoazure-maps-control touches window while the module is evaluated.
react-for-tomtomnonoReads maplibre-gl/package.json, which Node will only load with an import attribute.
react-for-mapplsnoyesmappls-web-maps is CommonJS, so its named exports cannot be statically analysed by the ESM loader.
react-for-maplibreyesnomaplibre-gl v6 is ESM-only and declares no CommonJS entry.
react-for-maptileryesnoSame as react-for-maplibre.

Hinir 14 pakkarnir hlaðast báðum megin. Niðurstaðan er sú sama og í 0.1.3, svo þetta er ekkert nýtt í 0.2.0.

Tvennt er gott að hafa í huga.

  • Við teiknun á þjóni skaltu flytja þjónustuaðilann inn seinkað í vafranum. Sé þjónustuaðili sem aðeins virkar í vafra fluttur inn kyrrstætt á efsta þrepi brotnar þjónsteiknun sem fer ekki gegnum pakkara. Opinbera vefsýnidæmið notar lazy(() => import('./providers/...')), og þess vegna gengur SSR-smíðin í Vite upp.
  • react-for-maplibre, react-for-maptiler og react-for-tomtom lýsa CommonJS-inngangi sem virkar ekki í raun. Ástæðan er sú að maplibre-gl v6 hætti að styðja CommonJS. Notaðu þessa þrjá sem ESM. Að fjarlægja require úr exports bíður seinni útgáfu.

Það eina sem var okkur sjálfum að kenna

react-for-openlayers hlóðst ekki í Node-ESM átti ekkert skylt við OpenLayers. Okkar eigin kóði flutti inn ol/proj án skráarendingar, og Node hafnar því sem innflutningi á möppu. Pakkarar hleypa því í gegn, svo það sást ekki. Lagfært í 0.2.1. Breytingin er þessi eina lína, og hegðunin gegnum pakkara er óbreytt.

Uppsetning

bash
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react @mapconductor/react-for-maplibre

Hver pakki á sína eigin geymslu. Sjá github.com/MapConductor.