fix: ensure vite build watch mode works - #16632
Conversation
|
Install the latest version of pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/f9ed999acc114297c97c2011543e02475a6fefc2Open in |
🦋 Changeset detectedLatest commit: f9ed999 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
vite build --watch49a9699 to
96fe7e0
Compare
|
What if the replacement happened in generateBundle instead, mutating chunk.code before write? That would make rebuilds correct by construction and remove normalise_build entirely. As it stands the chunk threading also still crashes; the second argument is evaluated before the watcher's first build, so it's permanently undefined (repro'd with the pkg build from 49a9699 on vite 8.0.12 and 8.2.0, same "chunks is not iterable" as #16624; the ERROR path has the same issue). |
e99e640 to
849b73d
Compare
|
The real issue is that all our logic in the |
|
Tested 849b73d. The crash is gone and the full pipeline runs, adapter output included. An error during the first build still hits the original TypeError though, because |
|
Thought I could just make it rely on a single watcher and re-run everything based on that (this is how we used to do it). Turns out, Rolldown's watchers are smarter now with Vite environments, so if you only changed files related to the service worker entrypoint, only those files would rebuild. Going to sleep on this and try to divide up the build steps logically tomorrow (though it's a bit of a waterfall right now). Some notes I jotted down roughly: EDIT: see PR description |
|
/autofix |
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to version-3, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `version-3` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `version-3`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## @sveltejs/kit@3.0.0-next.20 ### Major Changes - breaking: move remote function types to `$app/server` ([#16740](#16740)) - breaking: remove `#lib` definition from `paths`; requires explicit module extensions as a result ([#16736](#16736)) - breaking: move hooks-related types to `@sveltejs/kit/hooks` ([#16737](#16737)) - breaking: move env-related types to `@sveltejs/kit/env` ([#16739](#16739)) ### Minor Changes - feat: better response logging ([#16744](#16744)) ### Patch Changes - chore: bump `mrmime` to 2.0.1 ([#16745](#16745)) - chore: bump `@sveltejs/acorn-typescript` to 1.0.12 ([#16745](#16745)) - chore: bump `magic-string` to 1.1.0 ([#16745](#16745)) - chore: bump `devalue` to 5.9.0 ([#16745](#16745)) - chore: bump `cookie` to 2.0.1 ([#16745](#16745)) - chore: bump `acorn` to 8.18.0 ([#16745](#16745)) - fix: avoid infinite loop when building with `--watch` flag ([#16632](#16632)) ## @sveltejs/adapter-cloudflare@8.0.0-next.6 ### Patch Changes - chore: bump `@cloudflare/worker-types` to 5.20260809.1 ([#16745](#16745)) - Updated dependencies [[`1742811`](1742811), [`1611c61`](1611c61), [`b361b81`](b361b81), [`b361b81`](b361b81), [`b361b81`](b361b81), [`b361b81`](b361b81), [`13e7b18`](13e7b18), [`529346d`](529346d), [`b361b81`](b361b81), [`81d6319`](81d6319), [`b361b81`](b361b81), [`69a5bdf`](69a5bdf)]: - @sveltejs/kit@3.0.0-next.20 ## @sveltejs/adapter-netlify@7.0.0-next.8 ### Patch Changes - chore: bump `rolldown` to 1.2.3 ([#16745](#16745)) - Updated dependencies [[`1742811`](1742811), [`1611c61`](1611c61), [`b361b81`](b361b81), [`b361b81`](b361b81), [`b361b81`](b361b81), [`b361b81`](b361b81), [`13e7b18`](13e7b18), [`529346d`](529346d), [`b361b81`](b361b81), [`81d6319`](81d6319), [`b361b81`](b361b81), [`69a5bdf`](69a5bdf)]: - @sveltejs/kit@3.0.0-next.20 ## @sveltejs/adapter-node@6.0.0-next.10 ### Patch Changes - chore: bump `rolldown` to 1.2.3 ([#16745](#16745)) - Updated dependencies [[`1742811`](1742811), [`1611c61`](1611c61), [`b361b81`](b361b81), [`b361b81`](b361b81), [`b361b81`](b361b81), [`b361b81`](b361b81), [`13e7b18`](13e7b18), [`529346d`](529346d), [`b361b81`](b361b81), [`81d6319`](81d6319), [`b361b81`](b361b81), [`69a5bdf`](69a5bdf)]: - @sveltejs/kit@3.0.0-next.20 ## @sveltejs/enhanced-img@1.0.0-next.5 ### Patch Changes - chore: bump `magic-string` to 1.1.0 ([#16745](#16745)) - chore: bump `zimmerframe` to 1.1.4 ([#16745](#16745)) ## @sveltejs/package@3.0.0-next.6 ### Patch Changes - chore: bump `svelte2tsx` to 0.7.59 ([#16745](#16745)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
fixes #16624
Few changes were required:
builder.buildwhich can return a watcher instead of the build chunks. Added a normaliser to handle that. Unfortunately, the bundle has to be taken from thegenerateBundlehook.buildApphook doesn't re-run on watchThis only fixes the regression. There were additional existing bugs I've listed in #16708 but I don't think it's a high priority to fix them now when Vite's build watch mode support itself wasn't fully thought out
Questions:
build --watchprocess and end it if the assertions pass? with a timeout so it doesn't go on indefinitely?