-
-
Notifications
You must be signed in to change notification settings - Fork 6.4k
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
feat: use native runtime to import the config #19178
Conversation
e487dab
to
ea8d558
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this sounds great to me 👏🏼
::: tip CONFIG LOADING | ||
By default, Vite uses `esbuild` to bundle the config into a temporary file and load it. This may cause issues when importing TypeScript files in a monorepo. If you encounter any issues with this approach, you can specify `--configLoader runner` to use the [module runner](/guide/api-environment-runtimes.html#modulerunner) instead, which will not create a temporary config and will transform any files on the fly. Note that module runner doesn't support CJS in config files, but external CJS packages should work as usual. | ||
|
||
Alternatively, if you're using an environment that supports TypeScript (e.g. `node --experimental-strip-types`), or if you're only writing plain JavaScript, you can specify `--configLoader native` to use the environment's native runtime to load the config file. Note that updates to modules imported by the config file are not detected and hence would not auto-restart the Vite server. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Latest Node.js versions have type stripping unflagged, maybe it would be worth mentioning.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IIUC node 23 unflags it, but we don't really officially support odd versions of node, so I think I'd lean on not mentioning it for now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It feels a bit bloated that we have three ways to load the config. That said, I think it's good to evaluate this approach together with the other config loaders.
I also tested if we can keep the dependency tracking feature by using loaders in #19350. It seems it works without adding much code.
| datasource | package | from | to | | ---------- | ------- | ----- | ----- | | npm | vite | 6.0.7 | 6.1.0 | ## [v6.1.0](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#610-2025-02-05) - refactor: deprecate `vite optimize` command ([#19348](vitejs/vite#19348)) ([6e0e3c0](vitejs/vite@6e0e3c0)), closes [#19348](vitejs/vite#19348) - feat: show hosts in cert in CLI ([#19317](vitejs/vite#19317)) ([a5e306f](vitejs/vite@a5e306f)), closes [#19317](vitejs/vite#19317) - feat: support for env var for defining allowed hosts ([#19325](vitejs/vite#19325)) ([4d88f6c](vitejs/vite@4d88f6c)), closes [#19325](vitejs/vite#19325) - feat: use native runtime to import the config ([#19178](vitejs/vite#19178)) ([7c2a794](vitejs/vite@7c2a794)), closes [#19178](vitejs/vite#19178) - fix: avoid builtStart during vite optimize ([#19356](vitejs/vite#19356)) ([fdb36e0](vitejs/vite@fdb36e0)), closes [#19356](vitejs/vite#19356) - fix(build): fix stale build manifest on watch rebuild ([#19361](vitejs/vite#19361)) ([fcd5785](vitejs/vite@fcd5785)), closes [#19361](vitejs/vite#19361) ## [v6.0.11](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small6011-2025-01-21-small) - fix: `preview.allowedHosts` with specific values was not respected ([#19246](vitejs/vite#19246)) ([aeb3ec8](vitejs/vite@aeb3ec8)), closes [#19246](vitejs/vite#19246) - fix: allow CORS from loopback addresses by default ([#19249](vitejs/vite#19249)) ([3d03899](vitejs/vite@3d03899)), closes [#19249](vitejs/vite#19249) ## [v6.0.10](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small6010-2025-01-20-small) - fix: try parse `server.origin` URL ([#19241](vitejs/vite#19241)) ([2495022](vitejs/vite@2495022)), closes [#19241](vitejs/vite#19241) ## [v6.0.9](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small609-2025-01-20-small) - fix!: check host header to prevent DNS rebinding attacks and introduce `server.allowedHosts` ([bd896fb](vitejs/vite@bd896fb)) - fix!: default `server.cors: false` to disallow fetching from untrusted origins ([b09572a](vitejs/vite@b09572a)) - fix: verify token for HMR WebSocket connection ([029dcd6](vitejs/vite@029dcd6)) ## [v6.0.8](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small608-2025-01-20-small) - fix: avoid SSR HMR for HTML files ([#19193](vitejs/vite#19193)) ([3bd55bc](vitejs/vite@3bd55bc)), closes [#19193](vitejs/vite#19193) - fix: build time display 7m 60s ([#19108](vitejs/vite#19108)) ([cf0d2c8](vitejs/vite@cf0d2c8)), closes [#19108](vitejs/vite#19108) - fix: don't resolve URL starting with double slash ([#19059](vitejs/vite#19059)) ([35942cd](vitejs/vite@35942cd)), closes [#19059](vitejs/vite#19059) - fix: ensure `server.close()` only called once ([#19204](vitejs/vite#19204)) ([db81c2d](vitejs/vite@db81c2d)), closes [#19204](vitejs/vite#19204) - fix: resolve.conditions in ResolvedConfig was `defaultServerConditions` ([#19174](vitejs/vite#19174)) ([ad75c56](vitejs/vite@ad75c56)), closes [#19174](vitejs/vite#19174) - fix: tree shake stringified JSON imports ([#19189](vitejs/vite#19189)) ([f2aed62](vitejs/vite@f2aed62)), closes [#19189](vitejs/vite#19189) - fix: use shared sigterm callback ([#19203](vitejs/vite#19203)) ([47039f4](vitejs/vite@47039f4)), closes [#19203](vitejs/vite#19203) - fix(deps): update all non-major dependencies ([#19098](vitejs/vite#19098)) ([8639538](vitejs/vite@8639538)), closes [#19098](vitejs/vite#19098) - fix(optimizer): use correct default install state path for yarn PnP ([#19119](vitejs/vite#19119)) ([e690d8b](vitejs/vite@e690d8b)), closes [#19119](vitejs/vite#19119) - fix(types): improve `ESBuildOptions.include / exclude` type to allow `readonly (string | RegExp)[]` ([ea53e70](vitejs/vite@ea53e70)), closes [#19146](vitejs/vite#19146) - chore(deps): update dependency pathe to v2 ([#19139](vitejs/vite#19139)) ([71506f0](vitejs/vite@71506f0)), closes [#19139](vitejs/vite#19139)
| datasource | package | from | to | | ---------- | ------- | ----- | ----- | | npm | vite | 6.0.7 | 6.1.0 | ## [v6.1.0](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#610-2025-02-05) - refactor: deprecate `vite optimize` command ([#19348](vitejs/vite#19348)) ([6e0e3c0](vitejs/vite@6e0e3c0)), closes [#19348](vitejs/vite#19348) - feat: show hosts in cert in CLI ([#19317](vitejs/vite#19317)) ([a5e306f](vitejs/vite@a5e306f)), closes [#19317](vitejs/vite#19317) - feat: support for env var for defining allowed hosts ([#19325](vitejs/vite#19325)) ([4d88f6c](vitejs/vite@4d88f6c)), closes [#19325](vitejs/vite#19325) - feat: use native runtime to import the config ([#19178](vitejs/vite#19178)) ([7c2a794](vitejs/vite@7c2a794)), closes [#19178](vitejs/vite#19178) - fix: avoid builtStart during vite optimize ([#19356](vitejs/vite#19356)) ([fdb36e0](vitejs/vite@fdb36e0)), closes [#19356](vitejs/vite#19356) - fix(build): fix stale build manifest on watch rebuild ([#19361](vitejs/vite#19361)) ([fcd5785](vitejs/vite@fcd5785)), closes [#19361](vitejs/vite#19361) ## [v6.0.11](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small6011-2025-01-21-small) - fix: `preview.allowedHosts` with specific values was not respected ([#19246](vitejs/vite#19246)) ([aeb3ec8](vitejs/vite@aeb3ec8)), closes [#19246](vitejs/vite#19246) - fix: allow CORS from loopback addresses by default ([#19249](vitejs/vite#19249)) ([3d03899](vitejs/vite@3d03899)), closes [#19249](vitejs/vite#19249) ## [v6.0.10](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small6010-2025-01-20-small) - fix: try parse `server.origin` URL ([#19241](vitejs/vite#19241)) ([2495022](vitejs/vite@2495022)), closes [#19241](vitejs/vite#19241) ## [v6.0.9](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small609-2025-01-20-small) - fix!: check host header to prevent DNS rebinding attacks and introduce `server.allowedHosts` ([bd896fb](vitejs/vite@bd896fb)) - fix!: default `server.cors: false` to disallow fetching from untrusted origins ([b09572a](vitejs/vite@b09572a)) - fix: verify token for HMR WebSocket connection ([029dcd6](vitejs/vite@029dcd6)) ## [v6.0.8](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small608-2025-01-20-small) - fix: avoid SSR HMR for HTML files ([#19193](vitejs/vite#19193)) ([3bd55bc](vitejs/vite@3bd55bc)), closes [#19193](vitejs/vite#19193) - fix: build time display 7m 60s ([#19108](vitejs/vite#19108)) ([cf0d2c8](vitejs/vite@cf0d2c8)), closes [#19108](vitejs/vite#19108) - fix: don't resolve URL starting with double slash ([#19059](vitejs/vite#19059)) ([35942cd](vitejs/vite@35942cd)), closes [#19059](vitejs/vite#19059) - fix: ensure `server.close()` only called once ([#19204](vitejs/vite#19204)) ([db81c2d](vitejs/vite@db81c2d)), closes [#19204](vitejs/vite#19204) - fix: resolve.conditions in ResolvedConfig was `defaultServerConditions` ([#19174](vitejs/vite#19174)) ([ad75c56](vitejs/vite@ad75c56)), closes [#19174](vitejs/vite#19174) - fix: tree shake stringified JSON imports ([#19189](vitejs/vite#19189)) ([f2aed62](vitejs/vite@f2aed62)), closes [#19189](vitejs/vite#19189) - fix: use shared sigterm callback ([#19203](vitejs/vite#19203)) ([47039f4](vitejs/vite@47039f4)), closes [#19203](vitejs/vite#19203) - fix(deps): update all non-major dependencies ([#19098](vitejs/vite#19098)) ([8639538](vitejs/vite@8639538)), closes [#19098](vitejs/vite#19098) - fix(optimizer): use correct default install state path for yarn PnP ([#19119](vitejs/vite#19119)) ([e690d8b](vitejs/vite@e690d8b)), closes [#19119](vitejs/vite#19119) - fix(types): improve `ESBuildOptions.include / exclude` type to allow `readonly (string | RegExp)[]` ([ea53e70](vitejs/vite@ea53e70)), closes [#19146](vitejs/vite#19146) - chore(deps): update dependency pathe to v2 ([#19139](vitejs/vite#19139)) ([71506f0](vitejs/vite@71506f0)), closes [#19139](vitejs/vite#19139)
Description
Ref #18637 (
--configLoader runner
)Adds support for
--configLoader native
, which uses the environment's runtime to load the configNOTE: