-
Notifications
You must be signed in to change notification settings - Fork 28k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Add support for wildcard patterns in image.domains #18730
Conversation
Stats from current PRDefault Server Mode (Decrease detected ✓)General Overall increase
|
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
buildDuration | 15s | 15.1s | |
nodeModulesSize | 90.1 MB | 90.1 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.906 | 2.938 | |
/ avg req/sec | 860.27 | 851.04 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.758 | 1.758 | ✓ |
/error-in-render avg req/sec | 1421.76 | 1421.8 | +0.04 |
Client Bundles (main, webpack, commons)
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
677f882d2ed8..981d.js gzip | 11.3 kB | 11.3 kB | ✓ |
framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
main-d23595f..3966.js gzip | 7.35 kB | 7.35 kB | ✓ |
webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
Overall change | 58.3 kB | 58.3 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
677f882d2ed8..dule.js gzip | 7.03 kB | 7.03 kB | ✓ |
framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
main-65e68ba..dule.js gzip | 6.35 kB | 6.35 kB | ✓ |
webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
Overall change | 53.1 kB | 53.1 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
_app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
_error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
link-a674d88..ccde.js gzip | 1.35 kB | 1.35 kB | ✓ |
routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
Overall change | 7.75 kB | 7.75 kB | ✓ |
Client Pages Modern
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
_app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
_error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
link-a4469f3..dule.js gzip | 1.32 kB | 1.32 kB | ✓ |
routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
Overall change | 5.41 kB | 5.41 kB | ✓ |
Client Build Manifests
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
_buildManifest.js gzip | 322 B | 322 B | ✓ |
_buildManife..dule.js gzip | 330 B | 330 B | ✓ |
Overall change | 652 B | 652 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
index.html gzip | 1 kB | 1 kB | ✓ |
link.html gzip | 1.01 kB | 1.01 kB | ✓ |
withRouter.html gzip | 995 B | 995 B | ✓ |
Overall change | 3.01 kB | 3.01 kB | ✓ |
Serverless Mode
General Overall increase ⚠️
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
buildDuration | 17.3s | 17.2s | -67ms |
nodeModulesSize | 90.1 MB | 90.1 MB |
Client Bundles (main, webpack, commons)
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
677f882d2ed8..981d.js gzip | 11.3 kB | 11.3 kB | ✓ |
framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
main-d23595f..3966.js gzip | 7.35 kB | 7.35 kB | ✓ |
webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
Overall change | 58.3 kB | 58.3 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
677f882d2ed8..dule.js gzip | 7.03 kB | 7.03 kB | ✓ |
framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
main-65e68ba..dule.js gzip | 6.35 kB | 6.35 kB | ✓ |
webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
Overall change | 53.1 kB | 53.1 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
_app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
_error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
link-a674d88..ccde.js gzip | 1.35 kB | 1.35 kB | ✓ |
routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
Overall change | 7.75 kB | 7.75 kB | ✓ |
Client Pages Modern
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
_app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
_error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
link-a4469f3..dule.js gzip | 1.32 kB | 1.32 kB | ✓ |
routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
Overall change | 5.41 kB | 5.41 kB | ✓ |
Client Build Manifests
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
_buildManifest.js gzip | 322 B | 322 B | ✓ |
_buildManife..dule.js gzip | 330 B | 330 B | ✓ |
Overall change | 652 B | 652 B | ✓ |
Serverless bundles
vercel/next.js canary | nsams/next.js images-domain-pattern | Change | |
---|---|---|---|
_error.js | 1.07 MB | 1.07 MB | ✓ |
404.html | 4.73 kB | 4.73 kB | ✓ |
hooks.html | 3.92 kB | 3.92 kB | ✓ |
index.js | 1.07 MB | 1.07 MB | ✓ |
link.js | 1.12 MB | 1.12 MB | ✓ |
routerDirect.js | 1.11 MB | 1.11 MB | ✓ |
withRouter.js | 1.11 MB | 1.11 MB | ✓ |
Overall change | 5.48 MB | 5.48 MB | ✓ |
Would still love for this to happen! |
Bump -- can we please get this? It makes the |
please review this |
const domainExpr = new RegExp( | ||
'^' + | ||
domain | ||
.split(/\*+/) |
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.
Do we want to allow multiple asterisks?
domain | ||
.split(/\*+/) | ||
.map((s) => s.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')) | ||
.join('.*') + |
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.
.join('.*') + | |
.join('.+') + |
I think this should match one or more, right?
'^' + | ||
domain | ||
.split(/\*+/) | ||
.map((s) => s.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')) |
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.
Is this regex to escape regex? MDN has a slightly different example https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
I wonder if we can do this asterisk matching without regex and avoid escaping.
Can we please get this feature? :) |
It looks like the @nsams doesn't follow this PR. Can we close this and open a new one? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
…#36245) ## Description This PR implements a new configuration object in `next.config.js` called `experimental.images.remotePatterns`. This will eventually deprecate `images.domains` because it covers the same use cases and more by allowing wildcard pattern matching on `hostname` and `pathname` and also allows restricting `protocol` and `port`. ## Feature - [x] Implements an existing feature request. - [x] Related issues linked - [x] Unit tests added - [x] Integration tests added - [x] Documentation added - [x] Telemetry added. In case of a feature if it's used or not. - [x] Errors have helpful link attached, see `contributing.md` ## Related - Fixes #27925 - Closes #18429 - Closes #18632 - Closes #18730 - Closes #27345
This feature is available on the canary channel |
See #18632 and #27925