From feb573551f3ca8b16c97f79afac4c852731d0f4c Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Thu, 20 Aug 2026 16:05:58 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A1(frontend)=20warn=20in=20vite=20con?= =?UTF-8?q?fig=20on=20MediaPipe=20asset/track-processor=20drift?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a build-time warning in the Vite config that fires when the MediaPipe assets copied by `vite-plugin-static-copy` fall out of sync with the version used by `@livekit/track-processors`. This catches at build time the kind of drift that would otherwise only surface at runtime as broken virtual backgrounds. --- src/frontend/vite.config.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/frontend/vite.config.ts b/src/frontend/vite.config.ts index f29fd306..52ef7a17 100644 --- a/src/frontend/vite.config.ts +++ b/src/frontend/vite.config.ts @@ -5,16 +5,26 @@ import { visualizer } from 'rollup-plugin-visualizer' import svgr from 'vite-plugin-svgr' import { viteStaticCopy } from 'vite-plugin-static-copy' -const mediapipeVersion: string = JSON.parse( - readFileSync( - new URL( - './node_modules/@mediapipe/tasks-vision/package.json', - import.meta.url - ), - 'utf-8' - ) +const readPackageJson = (path: string) => + JSON.parse(readFileSync(new URL(path, import.meta.url), 'utf-8')) + +const mediapipeVersion: string = readPackageJson( + './node_modules/@mediapipe/tasks-vision/package.json' ).version +const livekitMediapipeVersion: string = readPackageJson( + './node_modules/@livekit/track-processors/package.json' +).dependencies['@mediapipe/tasks-vision'] + +if (mediapipeVersion !== livekitMediapipeVersion) { + throw new Error( + `@mediapipe/tasks-vision@${mediapipeVersion} is installed, but ` + + `@livekit/track-processors declares "${livekitMediapipeVersion}". ` + + `The two must stay in sync: pin "@mediapipe/tasks-vision" to ` + + `"${livekitMediapipeVersion}" in package.json.` + ) +} + // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd())