feat: use native runtime to import the config#19178
Merged
Conversation
e487dab to
ea8d558
Compare
wojtekmaj
reviewed
Jan 29, 2025
| ::: 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.
Latest Node.js versions have type stripping unflagged, maybe it would be worth mentioning.
Member
Author
There was a problem hiding this comment.
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.
sapphi-red
approved these changes
Feb 4, 2025
Member
sapphi-red
left a comment
There was a problem hiding this comment.
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.
This was referenced Feb 6, 2025
renovate bot
added a commit
to andrei-picus-tink/auto-renovate
that referenced
this pull request
Feb 7, 2025
| 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)
renovate bot
added a commit
to andrei-picus-tink/auto-renovate
that referenced
this pull request
Feb 7, 2025
| 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)
2 tasks
moonlitusun
pushed a commit
to moonlitusun/vite
that referenced
this pull request
May 25, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Ref #18637 (
--configLoader runner)Adds support for
--configLoader native, which uses the environment's runtime to load the configNOTE: