mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-19 13:36:48 +00:00
77dddd5e8a
Release branch for 4.0.0.
48 lines
1.7 KiB
JavaScript
48 lines
1.7 KiB
JavaScript
import { readdirSync, readFileSync, statSync } from 'node:fs'
|
|
import { join } from 'node:path'
|
|
|
|
/**
|
|
* Fails when a built chunk contains both WebGL map engines.
|
|
*
|
|
* mapbox-gl and maplibre-gl used to be static imports in the same three
|
|
* components, so rollup emitted a single 2.8 MB chunk carrying both. Every map
|
|
* user downloaded 1.8 MB of mapbox plus 1.1 MB of maplibre and ran one of them.
|
|
* A stray static import anywhere in the map tree brings that straight back, and
|
|
* nothing else would notice — the build stays green and the app still works.
|
|
*
|
|
* The markers are chosen to appear only inside the SDKs themselves, verified in
|
|
* node_modules. Do NOT test for the bare string "maplibre": the provider value
|
|
* 'maplibre-gl' and the setting key maplibre_style also appear in app code, so it
|
|
* matches the shared core chunk too.
|
|
*/
|
|
const DIR = 'dist/assets'
|
|
const MAPBOX = 'events.mapbox.com' // 1 hit in mapbox-gl, 0 in maplibre-gl
|
|
const MAPLIBRE = 'maplibregl-canvas' // 2 hits in maplibre-gl, 0 in mapbox-gl
|
|
|
|
let mixed = 0
|
|
let found = 0
|
|
|
|
for (const file of readdirSync(DIR).filter(f => f.endsWith('.js'))) {
|
|
const path = join(DIR, file)
|
|
const src = readFileSync(path, 'utf8')
|
|
const hasMapbox = src.includes(MAPBOX)
|
|
const hasMaplibre = src.includes(MAPLIBRE)
|
|
if (!hasMapbox && !hasMaplibre) continue
|
|
|
|
found++
|
|
const size = statSync(path).size
|
|
if (hasMapbox && hasMaplibre) {
|
|
console.error(`FAIL both GL engines in one chunk: ${file} (${size} B)`)
|
|
mixed++
|
|
} else {
|
|
console.log(`${hasMapbox ? 'mapbox ' : 'maplibre'} ${file} ${size} B`)
|
|
}
|
|
}
|
|
|
|
if (!found) {
|
|
console.error('FAIL no chunk contains either GL engine — did the build run?')
|
|
process.exit(1)
|
|
}
|
|
|
|
process.exit(mixed ? 1 : 0)
|