-
-
Notifications
You must be signed in to change notification settings - Fork 9.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
Builder-Vite: Add logic to set allowedHosts #30432
base: next
Are you sure you want to change the base?
Conversation
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.
1 file(s) reviewed, 1 comment(s)
Edit PR Review Bot Settings | Greptile
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.
LGTM
1 file(s) reviewed, no comment(s)
Edit PR Review Bot Settings | Greptile
View your CI Pipeline Execution ↗ for commit 7d4b70c.
☁️ Nx Cloud last updated this comment at |
9645c02
to
a58dc85
Compare
@@ -29,6 +29,12 @@ export async function createViteServer(options: Options, devServer: Server) { | |||
optimizeDeps: await getOptimizeDeps(commonCfg, options), | |||
}; | |||
|
|||
const ipRegex = /^(?:\d{1,3}\.){3}\d{1,3}$|^(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}$/; | |||
|
|||
config.server.allowedHosts = |
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.
Logic overview:
- If the vite config sets
server.allowedHosts
then use that value. - If
options.host
was passed and is not an IP address then restrict to only allow the hostnameoptions.host
. This needs to be lowercase or it will fail to resolve, so cast to lowercase. - Otherwise default to allow any hostname.
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.
@JSMike Thanks so much for putting this together!!
A few questions:
- Have you tested with an older version of Vite? Will it just ignore the option in that case?
- In the fallback case of
allowedHosts = true
, is that a security issue? Or it doesn't really apply because we're only running in dev?
Update yarn lock to use version of
vite
that hasallowedHosts
inServerOptions
.Add logic to pass forward
server.allowedHosts
from user's vite config, otherwise check if server is bound to value that should defaultallowedHosts
totrue
, otherwise use setallowedHosts
to contain specifiedhost
.Closes #30338
What I did
Add logic to define
allowedHosts
either by passing forward config from user's vite config, or setting default. This required updating some of the yarn lock to use a version that contained the type forallowedHosts
, but remained in respected semver range. This change should have no impact on prior versions because theallowedHosts
value will be ignored by vite.Checklist for Contributors
Testing
The changes in this PR are covered in the following automated tests:
Manual testing
This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!
yarn task --task sandbox --start-from auto --template lit-vite/default-ts
hostname
instead oflocalhost
, by default this should load as expected.{ server: { allowedHosts: ['localhost'] } }
yarn run storybook
from your sandboxhostname
as the URL and the preview should fail to load, as expected, since it is no longer an allowed hostname.localhost
as the URL and the preview should load.Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal
,ci:merged
orci:daily
GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli-storybook/src/sandbox-templates.ts
Make sure this PR contains one of the labels below:
Available labels
bug
: Internal changes that fixes incorrect behavior.maintenance
: User-facing maintenance tasks.dependencies
: Upgrading (sometimes downgrading) dependencies.build
: Internal-facing build tooling & test updates. Will not show up in release changelog.cleanup
: Minor cleanup style change. Will not show up in release changelog.documentation
: Documentation only changes. Will not show up in release changelog.feature request
: Introducing a new feature.BREAKING CHANGE
: Changes that break compatibility in some way with current major version.other
: Changes that don't fit in the above categories.🦋 Canary release
This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the
@storybookjs/core
team here.core team members can create a canary release here or locally with
gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>
Greptile Summary
Let me provide a clear and focused summary of this pull request:
Adds logic to handle
allowedHosts
configuration in Vite server setup to fix hostname accessibility issues in Storybook after Vite 6 upgrade.allowedHosts
configuration incode/builders/builder-vite/src/vite-server.ts
to preserve user-defined settingsallowedHosts: true
for common local addresses (::
/0.0.0.0
/127.0.0.1
)allowedHosts
array when not using common local addressesServerOptions
andAddressInfo
interfacesThe changes fix issue #30338 where Storybook was inaccessible via local hostnames after upgrading to Vite 6.
💡 (1/5) You can manually trigger the bot by mentioning @greptileai in a comment!