From e0212ca4b94b1ef392e9e20b629fab47ca039adc Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Fri, 3 Apr 2026 23:53:46 -0700 Subject: [PATCH] Remove the svelte-preprocess dev dependency, keeping global styles with a custom Vite plugin (#4003) * Remove the svelte-preprocess dev dependency, keeping global styles with a custom Vite plugin * More robust style tag detection * Fix CSS regressions --- frontend/package-lock.json | 57 ------------------- frontend/package.json | 1 - frontend/src/components/Editor.svelte | 2 +- .../floating-menus/ColorPicker.svelte | 2 +- .../components/floating-menus/Dialog.svelte | 2 +- .../floating-menus/EyedropperPreview.svelte | 2 +- .../components/floating-menus/MenuList.svelte | 2 +- .../floating-menus/NodeCatalog.svelte | 2 +- .../components/floating-menus/Tooltip.svelte | 2 +- .../layout/ConditionalWrapper.svelte | 2 +- .../src/components/layout/FloatingMenu.svelte | 2 +- .../src/components/layout/LayoutCol.svelte | 2 +- .../src/components/layout/LayoutRow.svelte | 2 +- frontend/src/components/panels/Data.svelte | 2 +- .../src/components/panels/Document.svelte | 2 +- frontend/src/components/panels/Layers.svelte | 2 +- .../src/components/panels/Properties.svelte | 2 +- frontend/src/components/panels/Welcome.svelte | 2 +- frontend/src/components/views/Graph.svelte | 6 +- .../components/widgets/WidgetLayout.svelte | 2 +- .../components/widgets/WidgetSection.svelte | 2 +- .../src/components/widgets/WidgetSpan.svelte | 2 +- .../src/components/widgets/WidgetTable.svelte | 2 +- .../buttons/BreadcrumbTrailButtons.svelte | 2 +- .../widgets/buttons/IconButton.svelte | 2 +- .../widgets/buttons/ImageButton.svelte | 2 +- .../buttons/ParameterExposeButton.svelte | 2 +- .../widgets/buttons/PopoverButton.svelte | 2 +- .../widgets/buttons/TextButton.svelte | 20 +++---- .../widgets/inputs/CheckboxInput.svelte | 2 +- .../widgets/inputs/ColorInput.svelte | 2 +- .../widgets/inputs/CurveInput.svelte | 2 +- .../widgets/inputs/DropdownInput.svelte | 2 +- .../widgets/inputs/FieldInput.svelte | 2 +- .../widgets/inputs/NumberInput.svelte | 2 +- .../widgets/inputs/RadioInput.svelte | 2 +- .../widgets/inputs/ReferencePointInput.svelte | 2 +- .../widgets/inputs/RulerInput.svelte | 2 +- .../widgets/inputs/ScrollbarInput.svelte | 2 +- .../widgets/inputs/SpectrumInput.svelte | 2 +- .../widgets/inputs/TextAreaInput.svelte | 2 +- .../widgets/inputs/TextInput.svelte | 2 +- .../widgets/inputs/WorkingColorsInput.svelte | 2 +- .../widgets/labels/IconLabel.svelte | 2 +- .../widgets/labels/ImageLabel.svelte | 2 +- .../widgets/labels/Separator.svelte | 2 +- .../widgets/labels/ShortcutLabel.svelte | 44 +++++++------- .../widgets/labels/TextLabel.svelte | 2 +- .../src/components/window/MainWindow.svelte | 2 +- frontend/src/components/window/Panel.svelte | 2 +- .../src/components/window/StatusBar.svelte | 2 +- .../src/components/window/TitleBar.svelte | 2 +- .../src/components/window/Workspace.svelte | 2 +- frontend/svelte.config.js | 4 +- frontend/vite.config.ts | 15 ++++- 55 files changed, 99 insertions(+), 144 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 49f3289e5c..4f2bd398e0 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -27,7 +27,6 @@ "sass": "^1.98.0", "svelte": "^5.54.1", "svelte-check": "^4.4.5", - "svelte-preprocess": "^6.0.3", "tar": "^7.5.12", "typescript": "^5.9.3", "typescript-eslint": "^8.57.1", @@ -6039,62 +6038,6 @@ "node": ">=10" } }, - "node_modules/svelte-preprocess": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", - "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": ">=3", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": ">=0.55", - "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, "node_modules/synckit": { "version": "0.11.12", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", diff --git a/frontend/package.json b/frontend/package.json index 9450f8f356..3250957599 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -48,7 +48,6 @@ "sass": "^1.98.0", "svelte": "^5.54.1", "svelte-check": "^4.4.5", - "svelte-preprocess": "^6.0.3", "tar": "^7.5.12", "typescript": "^5.9.3", "typescript-eslint": "^8.57.1", diff --git a/frontend/src/components/Editor.svelte b/frontend/src/components/Editor.svelte index 9592e34bf5..bc507dc93a 100644 --- a/frontend/src/components/Editor.svelte +++ b/frontend/src/components/Editor.svelte @@ -75,7 +75,7 @@ - + diff --git a/frontend/src/components/layout/FloatingMenu.svelte b/frontend/src/components/layout/FloatingMenu.svelte index 489013f1d0..a1198d7838 100644 --- a/frontend/src/components/layout/FloatingMenu.svelte +++ b/frontend/src/components/layout/FloatingMenu.svelte @@ -500,7 +500,7 @@ {/if} - + diff --git a/frontend/src/components/widgets/WidgetSection.svelte b/frontend/src/components/widgets/WidgetSection.svelte index e998176a39..20d713edf7 100644 --- a/frontend/src/components/widgets/WidgetSection.svelte +++ b/frontend/src/components/widgets/WidgetSection.svelte @@ -68,7 +68,7 @@ {/if} - diff --git a/frontend/src/components/widgets/inputs/CheckboxInput.svelte b/frontend/src/components/widgets/inputs/CheckboxInput.svelte index d078e95773..3ddc7fc245 100644 --- a/frontend/src/components/widgets/inputs/CheckboxInput.svelte +++ b/frontend/src/components/widgets/inputs/CheckboxInput.svelte @@ -63,7 +63,7 @@ - diff --git a/frontend/src/components/widgets/inputs/TextInput.svelte b/frontend/src/components/widgets/inputs/TextInput.svelte index f5e2e3efaa..a56a40ed0f 100644 --- a/frontend/src/components/widgets/inputs/TextInput.svelte +++ b/frontend/src/components/widgets/inputs/TextInput.svelte @@ -87,7 +87,7 @@ bind:this={self} /> -` block in Svelte components with `:global { ... }` to work around Svelte's unwanted scoped styles +function svelteGlobalStyles(): PluginOption { + return { + name: "svelte-global-styles", + enforce: "pre", + transform(code, id) { + if (!id.endsWith(".svelte")) return; + + return code.replace(/)([^>]*)>(.*?)<\/style>/gs, (_, attrs, content) => `\n:global {\n${content}\n}\n`); + }, + }; +} + function staticAssets(): PluginOption { const STATIC_ASSET_DIRS: { source: string; urlPrefix: string }[] = [ { source: "../demo-artwork", urlPrefix: "/demo-artwork" },