feat(resolve): auto externalize node builtins for noExternal: true
in node
#16019
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
In this PR, when setting
ssr.noExternal: true
andssr.target: 'node'
(default), node builtins will be auto-externalized. Without this PR, it'll error thatCannot bundle Node.js built-in "node:http" imported from .... Consider disabling ssr.noExternal or remove the built-in dependency.
, which I think is odd because we know we're building for node, and it's safe to auto-externalize by default.This feature was added long ago in #4490 for webworkers. And there's also workarounds by setting node builtins in
ssr.external
manually yourself. But I figured to kick off this idea since it feels like a safe default.Additional context
Found this while reviewing withastro/astro#10202. I figured for users who build to node and want to bundle everything, we can suggest
ssr.noExternal: true
only and it'll work, otherwise they need to workaround setting builtins inssr.external
manually.What is the purpose of this pull request?
Before submitting the PR, please make sure you do the following
fixes #123
).