-
- Notifications
You must be signed in to change notification settings - Fork 2.1k
fix: more robust remote files generation #14682
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
We tried very hard to get manualChunks to work (see #14632 for the latest attempt) but it just doesn't quite work out. What we need is to actually have Vite/Rollup know about the proper entry points to then resolve everything from there. The problem previously was that we didn't know of a good way to know which entry points we have on the fly. Turns out, `this.emitFile` is our savior (https://rollupjs.org/plugin-development/#this-emitfile). We can use it to create entry points while traversing the module graph and have Vite/Rollup wire up everything correctly. Fixes #14679
🦋 Changeset detectedLatest commit: 85dbbd6 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 |
| If it’s possible to prioritize this PR, I’d greatly appreciate it 🙏 |
| Commenting just so it's easy to find the historical context of this again: #14293 is the PR that introduced the |
| Tried to come up with a good testcase, alas there's nothing sensible except the repositories themselves, and even they may change depending on module ordering etc. |
| There is still some issue with the order of declarations when using a shared schema for server & client, for example. because the order is messed up in import { z as attributes } from "./index.js"; import "@sveltejs/kit/internal/server"; import "./utils.js"; import "@sveltejs/kit"; import { f as form } from "./query.js"; import * as z from "zod"; import { init_remote_functions } from "@sveltejs/kit/internal"; const m = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, get login() { return login; } }, Symbol.toStringTag, { value: "Module" })); const login = form(schema, (data) => { console.log(data); }); init_remote_functions(m, "src/routes/form/login.remote.js", "dth4yy"); for (const [name, fn] of Object.entries(m)) { fn.__.id = "dth4yy/" + name; fn.__.name = name; } const schema = z.object({ email: z.email(), password: z.string().min(8) }); function _page($$renderer, $$props) { $$renderer.component(($$renderer2) => { $$renderer2.push(`<form${attributes({ ...login.preflight(schema) })}><label>Email: <input${attributes({ ...login.fields.email.as("email") }, void 0, void 0, void 0, 4)}/></label> <label>Password: <input${attributes({ ...login.fields.password.as("password") }, void 0, void 0, void 0, 4)}/></label> <button type="submit">Login</button></form>`); }); } export { _page as _, m, schema as s }; |
Can you create a new issue with a minimal reproduction? |
We tried very hard to get manualChunks to work (see #14632 for the latest attempt) but it just doesn't quite work out. What we need is to actually have Vite/Rollup know about the proper entry points to then resolve everything from there. The problem previously was that we didn't know of a good way to know which entry points we have on the fly.
Turns out,
this.emitFileis our savior (https://rollupjs.org/plugin-development/#this-emitfile). We can use it to create entry points while traversing the module graph and have Vite/Rollup wire up everything correctly.Fixes #14679
Fixes #14708
Fixes #14736
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
Tests
pnpm testand lint the project withpnpm lintandpnpm checkChangesets
pnpm changesetand following the prompts. Changesets that add features should beminorand those that fix bugs should bepatch. Please prefix changeset messages withfeat:,fix:, orchore:.