diff --git a/helpers/getNextConfig.js b/helpers/getNextConfig.js index 6511aa076b..d6b0eb10ab 100644 --- a/helpers/getNextConfig.js +++ b/helpers/getNextConfig.js @@ -1,30 +1,27 @@ +'use strict' + const { resolve } = require('path') -let nextConfig +const moize = require('moize') // Load next.config.js const getNextConfig = async function (failBuild = defaultFailBuild) { - // Memoizes `nextConfig` - if (nextConfig !== undefined) { - return nextConfig - } - // We cannot load `next` at the top-level because we validate whether the // site is using `next` inside `onPreBuild`. const { PHASE_PRODUCTION_BUILD } = require('next/constants') const loadConfig = require('next/dist/next-server/server/config').default try { - nextConfig = await loadConfig(PHASE_PRODUCTION_BUILD, resolve('.')) + return await loadConfig(PHASE_PRODUCTION_BUILD, resolve('.')) } catch (error) { return failBuild('Error loading your next.config.js.', { error }) } - - return nextConfig } +const moizedGetNextConfig = moize(getNextConfig, { maxSize: 1e3, isPromise: true }) + const defaultFailBuild = function (message, { error }) { throw new Error(`${message}\n${error.stack}`) } -module.exports = getNextConfig +module.exports = moizedGetNextConfig diff --git a/package-lock.json b/package-lock.json index 1f0626ad16..5dd3c81cd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "fs-extra": "^9.1.0", "jimp": "^0.16.1", "make-dir": "^3.1.0", + "moize": "^6.0.0", "semver": "^7.3.2" }, "devDependencies": { @@ -12905,8 +12906,7 @@ "node_modules/fast-equals": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.0.tgz", - "integrity": "sha512-u6RBd8cSiLLxAiC04wVsLV6GBFDOXcTCgWkd3wEoFXgidPSoAJENqC9m7Jb2vewSvjBIfXV6icKeh3GTKfIaXA==", - "dev": true + "integrity": "sha512-u6RBd8cSiLLxAiC04wVsLV6GBFDOXcTCgWkd3wEoFXgidPSoAJENqC9m7Jb2vewSvjBIfXV6icKeh3GTKfIaXA==" }, "node_modules/fast-glob": { "version": "2.2.7", @@ -18236,8 +18236,7 @@ "node_modules/micro-memoize": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.0.9.tgz", - "integrity": "sha512-Z2uZi/IUMGQDCXASdujXRqrXXEwSY0XffUrAOllhqzQI3wpUyZbiZTiE2JuYC0HSG2G7DbCS5jZmsEKEGZuemg==", - "dev": true + "integrity": "sha512-Z2uZi/IUMGQDCXASdujXRqrXXEwSY0XffUrAOllhqzQI3wpUyZbiZTiE2JuYC0HSG2G7DbCS5jZmsEKEGZuemg==" }, "node_modules/micro-spelling-correcter": { "version": "1.1.1", @@ -18466,7 +18465,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/moize/-/moize-6.0.0.tgz", "integrity": "sha512-/GXPWgxfgQAeM2S7IPh29MDbhK9ZF1YjzP6QRcJ1QcYrqehe6eFpAQZ88Xk/s4dy/wYhMY5axT1vaaWC+lllZA==", - "dev": true, "dependencies": { "fast-equals": "2.0.0", "micro-memoize": "4.0.9" @@ -36930,8 +36928,7 @@ "fast-equals": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.0.tgz", - "integrity": "sha512-u6RBd8cSiLLxAiC04wVsLV6GBFDOXcTCgWkd3wEoFXgidPSoAJENqC9m7Jb2vewSvjBIfXV6icKeh3GTKfIaXA==", - "dev": true + "integrity": "sha512-u6RBd8cSiLLxAiC04wVsLV6GBFDOXcTCgWkd3wEoFXgidPSoAJENqC9m7Jb2vewSvjBIfXV6icKeh3GTKfIaXA==" }, "fast-glob": { "version": "2.2.7", @@ -41265,8 +41262,7 @@ "micro-memoize": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.0.9.tgz", - "integrity": "sha512-Z2uZi/IUMGQDCXASdujXRqrXXEwSY0XffUrAOllhqzQI3wpUyZbiZTiE2JuYC0HSG2G7DbCS5jZmsEKEGZuemg==", - "dev": true + "integrity": "sha512-Z2uZi/IUMGQDCXASdujXRqrXXEwSY0XffUrAOllhqzQI3wpUyZbiZTiE2JuYC0HSG2G7DbCS5jZmsEKEGZuemg==" }, "micro-spelling-correcter": { "version": "1.1.1", @@ -41450,7 +41446,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/moize/-/moize-6.0.0.tgz", "integrity": "sha512-/GXPWgxfgQAeM2S7IPh29MDbhK9ZF1YjzP6QRcJ1QcYrqehe6eFpAQZ88Xk/s4dy/wYhMY5axT1vaaWC+lllZA==", - "dev": true, "requires": { "fast-equals": "2.0.0", "micro-memoize": "4.0.9" diff --git a/package.json b/package.json index d29ab94442..dffb6f8f04 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "fs-extra": "^9.1.0", "jimp": "^0.16.1", "make-dir": "^3.1.0", + "moize": "^6.0.0", "semver": "^7.3.2" }, "devDependencies": {