1
- const getNextConfig = require ( './getNextConfig' )
2
- const findUp = require ( 'find-up' )
3
- const { writeFile, unlink } = require ( 'fs-extra' )
4
1
const path = require ( 'path' )
5
2
3
+ const { writeFile } = require ( 'fs-extra' )
4
+
5
+ const getNextConfig = require ( './getNextConfig' )
6
+ const getNextRoot = require ( './getNextRoot' )
7
+
6
8
// Checks if site has the correct next.config.js
7
- const verifyBuildTarget = async ( { failBuild } ) => {
8
- const { target } = await getNextConfig ( failBuild )
9
+ const verifyBuildTarget = async ( { failBuild, netlifyConfig } ) => {
10
+ const nextRoot = getNextRoot ( { netlifyConfig } )
11
+
12
+ const { target, configFile, ...rest } = await getNextConfig ( failBuild , nextRoot )
13
+ console . log ( { target, rest, configFile, nextRoot } )
9
14
10
15
// If the next config exists, log warning if target isnt in acceptableTargets
11
16
const acceptableTargets = [ 'serverless' , 'experimental-serverless-trace' ]
@@ -19,8 +24,6 @@ const verifyBuildTarget = async ({ failBuild }) => {
19
24
) } ". Building with "serverless" target.`,
20
25
)
21
26
22
- /* eslint-disable fp/no-delete, node/no-unpublished-require */
23
-
24
27
// We emulate Vercel so that we can set target to serverless if needed
25
28
process . env . NOW_BUILDER = true
26
29
// If no valid target is set, we use an internal Next env var to force it
@@ -29,30 +32,31 @@ const verifyBuildTarget = async ({ failBuild }) => {
29
32
// 🐉 We need Next to recalculate "isZeitNow" var so we can set the target, but it's
30
33
// set as an import side effect so we need to clear the require cache first. 🐲
31
34
// https://github.com/vercel/next.js/blob/canary/packages/next/telemetry/ci-info.ts
35
+ /* eslint-disable node/no-unpublished-require */
32
36
33
37
delete require . cache [ require . resolve ( 'next/dist/telemetry/ci-info' ) ]
34
38
delete require . cache [ require . resolve ( 'next/dist/next-server/server/config' ) ]
35
39
40
+ /* eslint-enable node/no-unpublished-require */
41
+
36
42
// Clear memoized cache
37
43
getNextConfig . clear ( )
38
44
39
45
// Creating a config file, because otherwise Next won't reload the config and pick up the new target
40
46
41
- if ( ! ( await findUp ( 'next.config.js' ) ) ) {
47
+ if ( ! configFile ) {
42
48
await writeFile (
43
49
path . resolve ( 'next.config.js' ) ,
44
50
`module.exports = {
45
- // Supported targets are "serverless" and "experimental-serverless-trace"
46
- target: "serverless"
47
- }` ,
51
+ // Supported targets are "serverless" and "experimental-serverless-trace"
52
+ target: "serverless"
53
+ }`,
48
54
)
49
55
}
50
56
// Force the new config to be generated
51
- await getNextConfig ( failBuild )
52
-
57
+ await getNextConfig ( failBuild , nextRoot )
53
58
// Reset the value in case something else is looking for it
54
59
process . env . NOW_BUILDER = false
55
- /* eslint-enable fp/no-delete, node/no-unpublished-require */
56
60
}
57
61
58
62
module . exports = verifyBuildTarget
0 commit comments