Skip to content
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

Add support for wildcard patterns in image.domains #18730

Closed
wants to merge 1 commit into from

Conversation

nsams
Copy link
Contributor

@nsams nsams commented Nov 3, 2020

See #18632 and #27925

@ijjk
Copy link
Member

ijjk commented Nov 3, 2020

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary nsams/next.js images-domain-pattern Change
buildDuration 15s 15.1s ⚠️ +33ms
nodeModulesSize 90.1 MB 90.1 MB ⚠️ +2.23 kB
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 ⚠️ +0.03
/ avg req/sec 860.27 851.04 ⚠️ -9.23
/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 ⚠️ +2.23 kB
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
Commit: 093cee4

@lachlanjc
Copy link
Contributor

Would still love for this to happen!

@zacharypodbela
Copy link

Bump -- can we please get this? It makes the Image Component literally unusable with external S3 files from our other systems. Would really love this.

@tan-ahmed
Copy link

please review this

const domainExpr = new RegExp(
'^' +
domain
.split(/\*+/)
Copy link
Member

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('.*') +
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
.join('.*') +
.join('.+') +

I think this should match one or more, right?

'^' +
domain
.split(/\*+/)
.map((s) => s.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&'))
Copy link
Member

@styfle styfle Jul 22, 2021

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.

@tommydemarco
Copy link

Can we please get this feature? :)

@henry-infevo
Copy link

It looks like the @nsams doesn't follow this PR. Can we close this and open a new one?

@413n

This comment has been minimized.

@aakashpahuja-bst

This comment has been minimized.

@jonlow

This comment has been minimized.

@samstr

This comment has been minimized.

@kodiakhq kodiakhq bot closed this in #36245 May 5, 2022
kodiakhq bot pushed a commit that referenced this pull request May 5, 2022
…#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
@styfle
Copy link
Member

styfle commented May 6, 2022

This feature is available on the canary channel npm i next@canary using the experimental remotePatterns config.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 6, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet