Skip to content

Commit

Permalink
Improve experimental feature naming (vercel#41060)
Browse files Browse the repository at this point in the history
Rename `optoutServerComponentsBundle` to `serverComponentsExternalPackages` which describes the feature better.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
  • Loading branch information
shuding authored and Kikobeats committed Oct 24, 2022
1 parent a78ce92 commit 281815a
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 9 deletions.
21 changes: 15 additions & 6 deletions packages/next/build/webpack-config.ts
Expand Up @@ -124,6 +124,12 @@ function errorIfEnvConflicted(config: NextConfigComplete, key: string) {
}
}

function isResourceInPackages(resource: string, packageNames?: string[]) {
return packageNames?.some((p: string) =>
new RegExp('[/\\\\]node_modules[/\\\\]' + p + '[/\\\\]').test(resource)
)
}

export function getDefineEnv({
dev,
config,
Expand Down Expand Up @@ -1137,8 +1143,9 @@ export default async function getBaseWebpackConfig(
if (layer === WEBPACK_LAYERS.server) {
// All packages should be bundled for the server layer if they're not opted out.
if (
config.experimental.optoutServerComponentsBundle?.some((p: string) =>
new RegExp('node_modules[/\\\\]' + p + '[/\\\\]').test(res)
isResourceInPackages(
res,
config.experimental.serverComponentsExternalPackages
)
) {
return `${externalType} ${request}`
Expand Down Expand Up @@ -1514,16 +1521,18 @@ export default async function getBaseWebpackConfig(
{
issuerLayer: WEBPACK_LAYERS.server,
test: (req: string) => {
// If it's not a source code file, or has been opted out of
// bundling, don't resolve it.
if (
!codeCondition.test.test(req) ||
config.experimental.optoutServerComponentsBundle?.some(
(mod) => {
return req.includes('/node_modules/' + mod + '/')
}
isResourceInPackages(
req,
config.experimental.serverComponentsExternalPackages
)
) {
return false
}

return true
},
resolve: process.env.__NEXT_REACT_CHANNEL
Expand Down
2 changes: 1 addition & 1 deletion packages/next/server/config-schema.ts
Expand Up @@ -323,7 +323,7 @@ const configSchema = {
optimisticClientCache: {
type: 'boolean',
},
optoutServerComponentsBundle: {
serverComponentsExternalPackages: {
items: {
type: 'string',
},
Expand Down
2 changes: 1 addition & 1 deletion packages/next/server/config-shared.ts
Expand Up @@ -154,7 +154,7 @@ export interface ExperimentalConfig {
adjustFontFallbacksWithSizeAdjust?: boolean

// A list of packages that should be treated as external in the RSC server build
optoutServerComponentsBundle?: string[]
serverComponentsExternalPackages?: string[]

fontLoaders?: { [fontLoader: string]: any }
}
Expand Down
2 changes: 1 addition & 1 deletion test/e2e/app-dir/rsc-basic/next.config.js
Expand Up @@ -5,7 +5,7 @@ module.exports = {
},
experimental: {
appDir: true,
optoutServerComponentsBundle: ['conditional-exports-optout'],
serverComponentsExternalPackages: ['conditional-exports-optout'],
},
rewrites: async () => {
return {
Expand Down

0 comments on commit 281815a

Please sign in to comment.