Skip to content

Commit 25d064f

Browse files
authored
Pre-compile more dependencies (#32742)
This ncc's some remaining dependencies bringing us under 20 install time dependencies (including nested dependencies), this also reduces install size by another `2.75 MB`. A follow-up PR will investigate a custom install script for our swc packages to allow us to remove the `optionalDependencies` which is slowing down install time as well. x-ref: #32679 x-ref: #32627 x-ref: #31887 x-ref: vercel/styled-jsx#770
1 parent 3894320 commit 25d064f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+2936
-101
lines changed

packages/next/build/babel/loader/get-config.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,10 @@ function getPlugins(
7777
: null
7878
const reactRefreshItem = hasReactRefresh
7979
? createConfigItem(
80-
[require('react-refresh/babel'), { skipEnvCheck: true }],
80+
[
81+
require('next/dist/compiled/react-refresh/babel'),
82+
{ skipEnvCheck: true },
83+
],
8184
{ type: 'plugin' }
8285
)
8386
: null

packages/next/build/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import getGzipSize from 'next/dist/compiled/gzip-size'
44
import textTable from 'next/dist/compiled/text-table'
55
import path from 'path'
66
import { promises as fs } from 'fs'
7-
import { isValidElementType } from 'react-is'
7+
import { isValidElementType } from 'next/dist/compiled/react-is'
88
import stripAnsi from 'next/dist/compiled/strip-ansi'
99
import {
1010
Redirect,

packages/next/build/webpack-config.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import ReactRefreshWebpackPlugin from '@next/react-refresh-utils/ReactRefreshWebpackPlugin'
1+
import ReactRefreshWebpackPlugin from 'next/dist/compiled/@next/react-refresh-utils/ReactRefreshWebpackPlugin'
22
import chalk from 'next/dist/compiled/chalk'
33
import crypto from 'crypto'
44
import { stringify } from 'querystring'
@@ -132,7 +132,8 @@ export function attachReactRefresh(
132132
targetLoader: webpack.RuleSetUseItem
133133
) {
134134
let injections = 0
135-
const reactRefreshLoaderName = '@next/react-refresh-utils/loader'
135+
const reactRefreshLoaderName =
136+
'next/dist/compiled/@next/react-refresh-utils/loader'
136137
const reactRefreshLoader = require.resolve(reactRefreshLoaderName)
137138
webpackConfig.module?.rules.forEach((rule) => {
138139
const curr = rule.use
@@ -496,7 +497,7 @@ export default async function getBaseWebpackConfig(
496497
...(dev
497498
? {
498499
[CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH]: require.resolve(
499-
`@next/react-refresh-utils/runtime`
500+
`next/dist/compiled/@next/react-refresh-utils/runtime`
500501
),
501502
[CLIENT_STATIC_FILES_RUNTIME_AMP]:
502503
`./` +
@@ -638,8 +639,7 @@ export default async function getBaseWebpackConfig(
638639
process: require.resolve('./polyfills/process'),
639640
// Handled in separate alias
640641
querystring: require.resolve('next/dist/compiled/querystring-es3'),
641-
// TODO: investigate ncc'ing stream-browserify
642-
stream: require.resolve('stream-browserify'),
642+
stream: require.resolve('next/dist/compiled/stream-browserify'),
643643
string_decoder: require.resolve(
644644
'next/dist/compiled/string_decoder'
645645
),
@@ -912,7 +912,8 @@ export default async function getBaseWebpackConfig(
912912
const externalType = isEsm ? 'module' : 'commonjs'
913913

914914
if (
915-
res.match(/next[/\\]dist[/\\]shared[/\\](?!lib[/\\]router[/\\]router)/)
915+
res.match(/next[/\\]dist[/\\]shared[/\\](?!lib[/\\]router[/\\]router)/) ||
916+
res.match(/next[/\\]dist[/\\]compiled[/\\].*\.[mc]?js$/)
916917
) {
917918
return `${externalType} ${request}`
918919
}
@@ -1245,7 +1246,9 @@ export default async function getBaseWebpackConfig(
12451246
...codeCondition,
12461247
use: hasReactRefresh
12471248
? [
1248-
require.resolve('@next/react-refresh-utils/loader'),
1249+
require.resolve(
1250+
'next/dist/compiled/@next/react-refresh-utils/loader'
1251+
),
12491252
defaultLoaders.babel,
12501253
]
12511254
: defaultLoaders.babel,

packages/next/build/webpack/plugins/terser-webpack-plugin/src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
sources,
77
} from 'next/dist/compiled/webpack/webpack'
88
import pLimit from 'next/dist/compiled/p-limit'
9-
import { Worker } from 'jest-worker'
9+
import { Worker } from 'next/dist/compiled/jest-worker'
1010
import { spans } from '../../profiling-plugin'
1111

1212
function getEcmaVersion(environment) {

packages/next/build/webpack/require-hook.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ const hookPropertyMap = new Map(
125125
'@babel/runtime/package.json',
126126
'next/dist/compiled/@babel/runtime/package.json',
127127
],
128+
['node-fetch', 'next/dist/compiled/node-fetch'],
128129
].map(([request, replacement]) => [request, require.resolve(replacement)])
129130
)
130131

packages/next/client/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ export async function initNext(opts: { webpackHMR?: any } = {}) {
330330
CachedComponent = pageEntrypoint.component
331331

332332
if (process.env.NODE_ENV !== 'production') {
333-
const { isValidElementType } = require('react-is')
333+
const { isValidElementType } = require('next/dist/compiled/react-is')
334334
if (!isValidElementType(CachedComponent)) {
335335
throw new Error(
336336
`The default export is not a React Component in page: "${page}"`

packages/next/compiled/@next/react-refresh-utils/ReactRefreshWebpackPlugin.js

Lines changed: 132 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/next/compiled/@next/react-refresh-utils/internal/ReactRefreshModule.runtime.js

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)