10000 Add asset relocator for production mode of serverless trace · Timer/next.js@8404f1d · GitHub
[go: up one dir, main page]

Skip to content

Commit 8404f1d

Browse files
committed
Add asset relocator for production mode of serverless trace
1 parent e6e0366 commit 8404f1d

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

packages/next/build/webpack-config.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ export default async function getBaseWebpackConfig(
8383
const isServerlessTrace = target === 'experimental-serverless-trace'
8484
const isLikeServerless = isServerless || isServerlessTrace
8585

86+
const isProductionServerlessTrace = isServerlessTrace && !dev && isServer
87+
8688
const outputDir = isLikeServerless ? SERVERLESS_DIRECTORY : SERVER_DIRECTORY
8789
const outputPath = path.join(distDir, isServer ? outputDir : '')
8890
const totalPages = Object.keys(entrypoints).length
@@ -403,10 +405,40 @@ export default async function getBaseWebpackConfig(
403405
...nodePathList, // Support for NODE_PATH environment variable
404406
],
405407
},
408+
...(isProductionServerlessTrace
409+
? {
410+
// `@zeit/webpack-asset-relocator-loader` will relocated all assets
411+
// so we can't let webpack mock this to `/` & `/index.js`.
412+
//
413+
// This is not enabled for `target: 'serverless'` for backwards
414+
// compatibility reasons.
415+
node: { __dirname: false, __filename: false },
416+
}
417+
: undefined),
406418
// @ts-ignore this is filtered
407419
module: {
408420
strictExportPresence: true,
409421
rules: [
422+
// This loader relocates all build assets into a new folder since we
423+
// change the emitted path structure during bundling.
424+
//
425+
// This is not enabled for `target: 'serverless'` for backwards
426+
// compatibility reasons.
427+
isProductionServerlessTrace && {
428+
// These extensions have been transformed into traditional JavaScript
429+
// by prior loaders.
430+
test: /\.(tsx|ts|js|mjs|jsx|node)$/,
431+
parser: { amd: false },
432+
use: {
433+
loader: '@zeit/webpack-asset-relocator-loader',
434+
options: {
435+
outputAssetBase: 'assets',
436+
existingAssetNames: [],
437+
wrapperCompatibility: false,
438+
production: true,
439+
},
440+
},
441+
},
410442
(selectivePageBuilding || config.experimental.terserLoader) &&
411443
!isServer && {
412444
test: /\.(js|mjs|jsx)$/,

packages/next/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
"@babel/preset-typescript": "7.3.3",
6868
"@babel/runtime": "7.4.5",
6969
"@babel/runtime-corejs2": "7.4.5",
70+
"@zeit/webpack-asset-relocator-loader": "0.6.2",
7071
"amphtml-validator": "1.0.23",
7172
"async-sema": "3.0.0",
7273
"autodll-webpack-plugin": "0.4.2",

yarn.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2342,6 +2342,13 @@
23422342
dependencies:
23432343
"@babel/preset-typescript" "^7.0.0"
23442344

2345+
"@zeit/webpack-asset-relocator-loader@0.6.2":
2346+ version "0.6.2"
2347+
resolved "https://registry.yarnpkg.com/@zeit/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-0.6.2.tgz#b15353d8578562f299eddb94d4b771297acc0487"
2348+
integrity sha512-IUz2YvFAv03LHP4dhjHqG549ecZhdp7KU8B+vGfJRgcDzvlCmc9CA1YcYfJHVO96U8dU5z85RIysr2whYUXmgQ==
2349+
dependencies:
2350+
sourcemap-codec "^1.4.4"
2351+
23452352
JSONStream@^1.0.4, JSONStream@^1.3.4:
23462353
version "1.3.5"
23472354
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -12241,6 +12248,11 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6:
1224112248
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
1224212249
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
1224312250

12251+
sourcemap-codec@^1.4.4:
12252+
version "1.4.6"
12253+
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9"
12254+
integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==
12255+
1224412256
spawn-sync@^1.0.15:
1224512257
version "1.0.15"
1224612258
resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476"

0 commit comments

Comments
 (0)
0