Skip to content

Commit e5276b8

Browse files
committed
fix: correctly exclude files in monorepos
1 parent 39da13e commit e5276b8

File tree

2 files changed

+45
-16
lines changed

2 files changed

+45
-16
lines changed

src/helpers/config.js

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// @ts-check
2-
const { join } = require('path')
2+
const { join, dirname, relative } = require('path')
33

44
const { readJSON } = require('fs-extra')
55

@@ -100,17 +100,29 @@ exports.generateRedirects = async ({ netlifyConfig, basePath, i18n }) => {
100100

101101
exports.getNextConfig = async function getNextConfig({ publish, failBuild = defaultFailBuild }) {
102102
try {
103-
const { config, appDir } = await readJSON(join(publish, 'required-server-files.json'))
103+
const { config, appDir, ignore } = await readJSON(join(publish, 'required-server-files.json'))
104104
if (!config) {
105105
return failBuild('Error loading your Next config')
106106
}
107-
return { ...config, appDir }
107+
return { ...config, appDir, ignore }
108108
} catch (error) {
109109
return failBuild('Error loading your Next config', { error })
110110
}
111111
}
112112

113-
exports.configureHandlerFunctions = ({ netlifyConfig, publish }) => {
113+
const resolveModuleRoot = (moduleName) => {
114+
try {
115+
return dirname(relative(process.cwd(), require.resolve(`${moduleName}/package.json`)))
116+
} catch (error) {
117+
return null
118+
}
119+
}
120+
121+
exports.configureHandlerFunctions = ({ netlifyConfig, publish, ignore = [] }) => {
122+
/* eslint-disable no-underscore-dangle */
123+
netlifyConfig.functions._ipx ||= {}
124+
netlifyConfig.functions._ipx.node_bundler = 'esbuild'
125+
/* eslint-enable no-underscore-dangle */
114126
;[HANDLER_FUNCTION_NAME, ODB_FUNCTION_NAME].forEach((functionName) => {
115127
netlifyConfig.functions[functionName] ||= { included_files: [], external_node_modules: [] }
116128
netlifyConfig.functions[functionName].node_bundler = 'nft'
@@ -120,16 +132,33 @@ exports.configureHandlerFunctions = ({ netlifyConfig, publish }) => {
120132
`${publish}/serverless/**`,
121133
`${publish}/*.json`,
122134
`${publish}/BUILD_ID`,
123-
'!node_modules/@next/swc-*/**/*',
124-
'!node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*',
125-
'!node_modules/next/dist/pages/**/*',
126-
`!node_modules/next/dist/server/lib/squoosh/**/*.wasm`,
127-
`!node_modules/next/dist/next-server/server/lib/squoosh/**/*.wasm`,
128-
'!node_modules/next/dist/compiled/webpack/(bundle4|bundle5).js',
129-
'!node_modules/react/**/*.development.js',
130-
'!node_modules/react-dom/**/*.development.js',
131-
'!node_modules/use-subscription/**/*.development.js',
132-
'!node_modules/sharp/**/*',
135+
...ignore.map((path) => `!${path}`),
133136
)
137+
138+
const nextRoot = resolveModuleRoot('next')
139+
if (nextRoot) {
140+
netlifyConfig.functions[functionName].included_files.push(
141+
`!${nextRoot}/dist/pages/**/*`,
142+
`!${nextRoot}/dist/server/lib/squoosh/**/*.wasm`,
143+
`!${nextRoot}/dist/next-server/server/lib/squoosh/**/*.wasm`,
144+
`!${nextRoot}/dist/compiled/webpack/bundle4.js`,
145+
`!${nextRoot}/dist/compiled/webpack/bundle5.js`,
146+
`!${nextRoot}/dist/compiled/terser/bundle.min.js`,
147+
)
148+
}
149+
150+
const reactRoot = resolveModuleRoot('react')
151+
if (reactRoot) {
152+
netlifyConfig.functions[functionName].included_files.push(`!${reactRoot}/**/*.development.js`)
153+
}
154+
const reactDomRoot = resolveModuleRoot('react-dom')
155+
if (reactDomRoot) {
156+
netlifyConfig.functions[functionName].included_files.push(`!${reactDomRoot}/**/*.development.js`)
157+
}
158+
159+
const sharpRoot = resolveModuleRoot('sharp')
160+
if (sharpRoot) {
161+
netlifyConfig.functions[functionName].included_files.push(`!${sharpRoot}/**/*`)
162+
}
134163
})
135164
}

src/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ module.exports = {
4343

4444
checkNextSiteHasBuilt({ publish, failBuild })
4545

46-
const { appDir, basePath, i18n, images, target } = await getNextConfig({ publish, failBuild })
46+
const { appDir, basePath, i18n, images, target, ignore } = await getNextConfig({ publish, failBuild })
4747

4848
verifyBuildTarget(target)
4949

50-
configureHandlerFunctions({ netlifyConfig, publish: relative(process.cwd(), publish) })
50+
configureHandlerFunctions({ netlifyConfig, ignore, publish: relative(process.cwd(), publish) })
5151

5252
await generateFunctions(constants, appDir)
5353
await generatePagesResolver({ netlifyConfig, target, constants })

0 commit comments

Comments
 (0)