fix: resolve Prism CJS loading crash in Vite dev mode

Remove the prismSetup module that imported prismjs directly — it
caused Vite to pre-bundle prismjs into a separate chunk from
@lexical/code-prism, breaking the CJS require chain.  Language
components tried to call Prism.languages.extend() before the base
grammars were available, crashing the app.

Instead, add optimizeDeps.include for prismjs and @lexical/code-prism
so Vite pre-bundles them together, preserving the correct CJS
evaluation order within a single chunk.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Kaya
2026-03-25 20:03:57 +01:00
co-authored by Copilot
parent 5dc86426b1
commit 2338d7c44b
3 changed files with 6 additions and 16 deletions
+6
View File
@@ -33,6 +33,12 @@ export default defineConfig({
build: {
outDir: 'dist/renderer',
},
optimizeDeps: {
// @lexical/code-prism depends on prismjs + its language components via
// CJS require(). Vite must pre-bundle them together so that the Prism
// global is available when component IIFEs execute.
include: ['prismjs', '@lexical/code-prism'],
},
plugins: [react(), tailwindcss()],
resolve: {
alias: {
-15
View File
@@ -1,15 +0,0 @@
/**
* Ensures the PrismJS global is available before @lexical/code-prism
* captures its tokenizer reference.
*
* @lexical/code-prism reads `globalThis.Prism` at module-evaluation time.
* In Vite dev mode the esbuild CJS shim may not have set the global yet,
* so we force it here. This module must be imported before any module
* that transitively loads @lexical/code-prism.
*/
import Prism from 'prismjs';
if (typeof globalThis !== 'undefined' && !globalThis.Prism) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(globalThis as any).Prism = Prism;
}
-1
View File
@@ -1,7 +1,6 @@
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import '@renderer/lib/prismSetup';
import App from '@renderer/App';
import '@renderer/styles.css';