Only add flying-shuttle code when enabled (#8330)

Follow-up of #7536, small optimization / code removal when the feature is not enabled.
This commit is contained in:
Tim Neutkens 2019-08-12 00:03:11 +02:00 committed by GitHub
parent 963726d68e
commit 2b62c33f25
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 47 additions and 34 deletions

View file

@ -147,6 +147,7 @@ export default class Router implements BaseRouter {
}
}
// @deprecated backwards compatibility even though it's a private method.
static _rewriteUrlForNextExport(url: string): string {
return rewriteUrlForNextExport(url)
}

View file

@ -541,6 +541,9 @@ export default async function getBaseWebpackConfig(
'process.env.NODE_ENV': JSON.stringify(webpackMode),
'process.crossOrigin': JSON.stringify(crossOrigin),
'process.browser': JSON.stringify(!isServer),
'process.env.__NEXT_EXPERIMENTAL_SELECTIVEPAGEBUILDING': JSON.stringify(
selectivePageBuilding
),
// This is used in client/dev-error-overlay/hot-dev-client.js to replace the dist directory
...(dev && !isServer
? {

View file

@ -162,8 +162,10 @@ export default async ({ webpackHMR: passedWebpackHMR } = {}) => {
await window.__NEXT_PRELOADREADY(dynamicIds)
}
if (dynamicBuildId === true) {
pageLoader.onDynamicBuildId()
if (process.env.__NEXT_EXPERIMENTAL_SELECTIVEPAGEBUILDING) {
if (dynamicBuildId === true) {
pageLoader.onDynamicBuildId()
}
}
router = createRouter(page, query, asPath, {

View file

@ -1,6 +1,5 @@
/* global document, window */
import mitt from 'next-server/dist/lib/mitt'
import unfetch from 'unfetch'
function supportsPreload (el) {
try {
@ -41,6 +40,39 @@ export default class PageLoader {
}
})
}
if (process.env.__NEXT_EXPERIMENTAL_SELECTIVEPAGEBUILDING) {
this.promisedBuildId = Promise.resolve()
this.onDynamicBuildId = () => {
this.promisedBuildId = new Promise(resolve => {
const unfetch = require('unfetch')
unfetch(`${this.assetPrefix}/_next/static/HEAD_BUILD_ID`)
.then(res => {
if (res.ok) {
return res
}
const err = new Error('Failed to fetch HEAD buildId')
err.res = res
throw err
})
.then(res => res.text())
.then(buildId => {
this.buildId = buildId.trim()
})
.catch(() => {
// When this fails it's not a _huge_ deal, preload wont work and page
// navigation will 404, triggering a SSR refresh
console.warn(
'Failed to load BUILD_ID from server. ' +
'The following client-side page transition will likely 404 and cause a SSR.\n' +
'http://err.sh/zeit/next.js/head-build-id'
)
})
.then(resolve, resolve)
})
}
}
}
// Returns a promise for the dependencies for a particular route
@ -111,37 +143,10 @@ export default class PageLoader {
})
}
onDynamicBuildId () {
this.promisedBuildId = new Promise(resolve => {
unfetch(`${this.assetPrefix}/_next/static/HEAD_BUILD_ID`)
.then(res => {
if (res.ok) {
return res
}
const err = new Error('Failed to fetch HEAD buildId')
err.res = res
throw err
})
.then(res => res.text())
.then(buildId => {
this.buildId = buildId.trim()
})
.catch(() => {
// When this fails it's not a _huge_ deal, preload wont work and page
// navigation will 404, triggering a SSR refresh
console.warn(
'Failed to load BUILD_ID from server. ' +
'The following client-side page transition will likely 404 and cause a SSR.\n' +
'http://err.sh/zeit/next.js/head-build-id'
)
})
.then(resolve, resolve)
})
}
async loadRoute (route) {
await this.promisedBuildId
if (process.env.__NEXT_EXPERIMENTAL_SELECTIVEPAGEBUILDING) {
await this.promisedBuildId
}
route = this.normalizeRoute(route)
let scriptRoute = route === '/' ? '/index.js' : `${route}.js`
@ -206,7 +211,9 @@ export default class PageLoader {
}
async prefetch (route, isDependency) {
await this.promisedBuildId
if (process.env.__NEXT_EXPERIMENTAL_SELECTIVEPAGEBUILDING) {
await this.promisedBuildId
}
route = this.normalizeRoute(route)
let scriptRoute = `${route === '/' ? '/index' : route}.js`