fix: should allow optional properties for images option (#28709)

## Bug
- Fixes #28708

- [x] Related issues linked using `fixes #number`
This commit is contained in:
CatNose 2021-09-09 07:03:52 +09:00 committed by GitHub
parent 8921d9115b
commit 13893395dc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 10 deletions

View file

@ -2,7 +2,7 @@ import React from 'react'
import Head from '../shared/lib/head'
import { toBase64 } from '../shared/lib/to-base-64'
import {
ImageConfig,
ImageConfigComplete,
imageConfigDefault,
LoaderValue,
VALID_LOADERS,
@ -110,7 +110,8 @@ const {
loader: configLoader,
path: configPath,
domains: configDomains,
} = (process.env.__NEXT_IMAGE_OPTS as any as ImageConfig) || imageConfigDefault
} = (process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete) ||
imageConfigDefault
// sort smallest to largest
const allSizes = [...configDeviceSizes, ...configImageSizes]
configDeviceSizes.sort((a, b) => a - b)

View file

@ -1,13 +1,15 @@
import os from 'os'
import { Header, Redirect, Rewrite } from '../lib/load-custom-routes'
import { ImageConfig, imageConfigDefault } from './image-config'
import {
ImageConfig,
ImageConfigComplete,
imageConfigDefault,
} from './image-config'
type NoOptionals<T> = {
[P in keyof T]-?: T[P]
export type NextConfigComplete = Required<NextConfig> & {
images: ImageConfigComplete
}
export type NextConfigComplete = NoOptionals<NextConfig>
export interface I18NConfig {
defaultLocale: string
domains?: DomainLocale[]

View file

@ -181,7 +181,7 @@ function assignDefaults(userConfig: { [key: string]: any }) {
}
if (result?.images) {
const images: Partial<ImageConfig> = result.images
const images: ImageConfig = result.images
if (typeof images !== 'object') {
throw new Error(

View file

@ -8,7 +8,7 @@ export const VALID_LOADERS = [
export type LoaderValue = typeof VALID_LOADERS[number]
export type ImageConfig = {
export type ImageConfigComplete = {
deviceSizes: number[]
imageSizes: number[]
loader: LoaderValue
@ -18,7 +18,9 @@ export type ImageConfig = {
minimumCacheTTL?: number
}
export const imageConfigDefault: ImageConfig = {
export type ImageConfig = Partial<ImageConfigComplete>
export const imageConfigDefault: ImageConfigComplete = {
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
path: '/_next/image',