From f66c1bae8f9f9c02768b2ce0054e97b7a5859191 Mon Sep 17 00:00:00 2001 From: dominikg Date: Sat, 17 Sep 2022 12:24:40 +0200 Subject: [PATCH 1/3] fix: update svelte-hmr and enable partial accept to allow context=module updates, see issue #134 --- .changeset/little-ligers-look.md | 5 +++++ packages/e2e-tests/hmr/__tests__/hmr.spec.ts | 12 +++++++++++ packages/e2e-tests/hmr/src/App.svelte | 4 ++++ .../partial-hmr/ModuleContext.svelte | 12 +++++++++++ .../components/partial-hmr/PartialHmr.svelte | 6 ++++++ .../kit-demo-app/src/routes/about/+page.js | 2 +- packages/vite-plugin-svelte/package.json | 2 +- .../vite-plugin-svelte/src/utils/options.ts | 20 +++++++++++++++++-- pnpm-lock.yaml | 8 ++++---- 9 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 .changeset/little-ligers-look.md create mode 100644 packages/e2e-tests/hmr/src/components/partial-hmr/ModuleContext.svelte create mode 100644 packages/e2e-tests/hmr/src/components/partial-hmr/PartialHmr.svelte diff --git a/.changeset/little-ligers-look.md b/.changeset/little-ligers-look.md new file mode 100644 index 000000000..62a6686f8 --- /dev/null +++ b/.changeset/little-ligers-look.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/vite-plugin-svelte': patch +--- + +update svelte-hmr and enable partial hmr accept by default (fixes #134) diff --git a/packages/e2e-tests/hmr/__tests__/hmr.spec.ts b/packages/e2e-tests/hmr/__tests__/hmr.spec.ts index d1fc383f9..ca05c2765 100644 --- a/packages/e2e-tests/hmr/__tests__/hmr.spec.ts +++ b/packages/e2e-tests/hmr/__tests__/hmr.spec.ts @@ -54,6 +54,10 @@ test('should respect transforms', async () => { if (!isBuild) { describe('hmr', () => { const updateHmrTest = editFileAndWaitForHmrComplete.bind(null, 'src/components/HmrTest.svelte'); + const updateModuleContext = editFileAndWaitForHmrComplete.bind( + null, + 'src/components/partial-hmr/ModuleContext.svelte' + ); const updateApp = editFileAndWaitForHmrComplete.bind(null, 'src/App.svelte'); const updateStore = editFileAndWaitForHmrComplete.bind(null, 'src/stores/hmr-stores.js'); @@ -136,6 +140,14 @@ if (!isBuild) { expect(await getText(`#hmr-test-3 .counter`)).toBe('0'); }); + test('should work when editing script context="module"', async () => { + expect(await getText(`#hmr-with-context`)).toContain('x=0 y=1 slot=1'); + expect(await getText(`#hmr-without-context`)).toContain('x=0 y=1 slot='); + await updateModuleContext((content) => content.replace('y = 1', 'y = 2')); + expect(await getText(`#hmr-with-context`)).toContain('x=0 y=2 slot=2'); + expect(await getText(`#hmr-without-context`)).toContain('x=0 y=2 slot='); + }); + test('should work with emitCss: false in vite config', async () => { await editViteConfig((c) => c.replace('svelte()', 'svelte({emitCss:false})')); expect(await getText(`#hmr-test-1 .counter`)).toBe('0'); diff --git a/packages/e2e-tests/hmr/src/App.svelte b/packages/e2e-tests/hmr/src/App.svelte index 995c1e178..399824ca6 100644 --- a/packages/e2e-tests/hmr/src/App.svelte +++ b/packages/e2e-tests/hmr/src/App.svelte @@ -2,6 +2,7 @@ import StaticImport from './components/StaticImport.svelte'; import Dependency from 'e2e-test-dep-svelte-simple'; import HmrTest from './components/HmrTest.svelte'; + import PartialHmr from './components/partial-hmr/PartialHmr.svelte'; const jsTransform = '__JS_TRANSFORM_1__'; let dynamicImportComponent; function importDynamic() { @@ -25,6 +26,9 @@ + + +