Skip to content

Commit f422853

Browse files
committed
feat: add env var to disable IPX function
includes some domain path and test updates
1 parent 1c9c3df commit f422853

File tree

9 files changed

+37
-25
lines changed

9 files changed

+37
-25
lines changed

demos/canary/pages/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default function Home() {
1717
</main>
1818

1919
<Image
20-
src="https://raw.githubusercontent.com/netlify/next-runtime/main/next-on-netlify.png"
20+
src="https://raw.githubusercontent.com/netlify/next-runtime/main/demos/default/public/next-on-netlify.png"
2121
alt="Picture of the author"
2222
width={540}
2323
height={191}

demos/default/next.config.js

+7-9
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,18 @@ module.exports = {
7171
},
7272
// https://nextjs.org/docs/basic-features/image-optimization#domains
7373
images: {
74-
domains: ['raw.githubusercontent.com'],
74+
domains: ['raw.githubusercontent.com', 'upload.wikimedia.org'],
75+
remotePatterns: [
76+
{
77+
hostname: '*.imgur.com',
78+
}
79+
]
7580
},
7681
// https://nextjs.org/docs/basic-features/built-in-css-support#customizing-sass-options
7782
sassOptions: {
7883
includePaths: [path.join(__dirname, 'styles-sass-test')],
7984
},
8085
experimental: {
8186
optimizeCss: true,
82-
images: {
83-
remotePatterns: [
84-
{
85-
hostname: '*.imgur.com',
86-
},
87-
],
88-
},
89-
},
87+
}
9088
}

demos/default/pages/image.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const Images = () => (
1515
<p>
1616
<Image src={logo} alt="netlify logomark" />
1717
<Image
18-
src="https://raw.githubusercontent.com/netlify/next-runtime/main/next-on-netlify.png"
18+
src="https://raw.githubusercontent.com/netlify/next-runtime/main/demos/default/public/next-on-netlify.png"
1919
alt="Picture of the author"
2020
width={500}
2121
height={500}

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/runtime/src/helpers/edge.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type { MiddlewareManifest } from 'next/dist/build/webpack/plugins/middlew
88
import type { RouteHas } from 'next/dist/lib/load-custom-routes'
99

1010
import { getRequiredServerFiles } from './config'
11+
import { isEnvSet } from './utils'
1112

1213
// This is the format as of [email protected]
1314
interface EdgeFunctionDefinitionV1 {
@@ -205,7 +206,7 @@ export const writeEdgeFunctions = async (netlifyConfig: NetlifyConfig) => {
205206
const nextConfig = nextConfigFile.config
206207
await writeJSON(join(edgeFunctionRoot, 'edge-shared', 'nextConfig.json'), nextConfig)
207208

208-
if (!process.env.NEXT_DISABLE_EDGE_IMAGES) {
209+
if (!process.env.NEXT_DISABLE_EDGE_IMAGES || !isEnvSet('DISABLE_IPX')) {
209210
console.log(
210211
'Using Netlify Edge Functions for image format detection. Set env var "NEXT_DISABLE_EDGE_IMAGES=true" to disable.',
211212
)

packages/runtime/src/helpers/utils.ts

+3
Original file line numberDiff line numberDiff line change
@@ -228,4 +228,7 @@ export const getRemotePatterns = (experimental: ExperimentalConfigWithLegacy, im
228228
}
229229
return []
230230
}
231+
232+
export const isEnvSet = (envVar: string) => process.env[envVar] === 'true' || process.env[envVar] === '1'
233+
231234
/* eslint-enable max-lines */

packages/runtime/src/index.ts

+18-9
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ import {
2525
import { moveStaticPages, movePublicFiles, patchNextFiles } from './helpers/files'
2626
import { generateFunctions, setupImageFunction, generatePagesResolver } from './helpers/functions'
2727
import { generateRedirects, generateStaticRedirects } from './helpers/redirects'
28-
import { shouldSkip, isNextAuthInstalled, getCustomImageResponseHeaders, getRemotePatterns } from './helpers/utils'
28+
import {
29+
shouldSkip,
30+
isNextAuthInstalled,
31+
getCustomImageResponseHeaders,
32+
getRemotePatterns,
33+
isEnvSet,
34+
} from './helpers/utils'
2935
import {
3036
verifyNetlifyBuildVersion,
3137
checkNextSiteHasBuilt,
@@ -64,6 +70,7 @@ const plugin: NetlifyPlugin = {
6470
netlifyConfig.build.environment.NEXT_PRIVATE_TARGET = 'server'
6571
},
6672

73+
// eslint-disable-next-line max-lines-per-function
6774
async onBuild({
6875
constants,
6976
netlifyConfig,
@@ -163,14 +170,16 @@ const plugin: NetlifyPlugin = {
163170
nextConfig: { basePath, i18n },
164171
})
165172

166-
await setupImageFunction({
167-
constants,
168-
imageconfig: images,
169-
netlifyConfig,
170-
basePath,
171-
remotePatterns: getRemotePatterns(experimental, images),
172-
responseHeaders: getCustomImageResponseHeaders(netlifyConfig.headers),
173-
})
173+
if (!isEnvSet('DISABLE_IPX')) {
174+
await setupImageFunction({
175+
constants,
176+
imageconfig: images,
177+
netlifyConfig,
178+
basePath,
179+
remotePatterns: getRemotePatterns(experimental, images),
180+
responseHeaders: getCustomImageResponseHeaders(netlifyConfig.headers),
181+
})
182+
}
174183

175184
await generateRedirects({
176185
netlifyConfig,

test/helpers/utils.spec.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ describe('getRemotePatterns', () => {
5959
formats: [ 'image/avif', 'image/webp' ],
6060
dangerouslyAllowSVG: false,
6161
contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;",
62-
unoptimized: false
62+
unoptimized: false,
63+
remotePatterns: []
6364
} as ImagesConfig
6465

6566
})

test/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ describe('onBuild()', () => {
567567
const imageConfigPath = path.join(constants.INTERNAL_FUNCTIONS_SRC, IMAGE_FUNCTION_NAME, 'imageconfig.json')
568568
const imageConfigJson = await readJson(imageConfigPath)
569569

570-
expect(imageConfigJson.domains.length).toBe(1)
570+
expect(imageConfigJson.domains.length).toBe(2)
571571
expect(imageConfigJson.remotePatterns.length).toBe(1)
572572
expect(imageConfigJson.responseHeaders).toStrictEqual({
573573
'X-Foo': mockHeaderValue,

0 commit comments

Comments
 (0)