diff --git a/lib/prefetch.js b/lib/prefetch.js index e2f6f93754618..eef963354b303 100644 --- a/lib/prefetch.js +++ b/lib/prefetch.js @@ -1,3 +1,5 @@ +/* global __NEXT_DATA__ */ + import React from 'react' import Link, { isLocal } from './link' import { parse as urlParse } from 'url' @@ -108,7 +110,7 @@ if (hasServiceWorkerSupport()) { function getPrefetchUrl (href) { let { pathname } = urlParse(href) - const url = `/_next/pages${pathname}` + const url = `/_next/${__NEXT_DATA__.buildId}/pages${pathname}` return url } diff --git a/lib/router/router.js b/lib/router/router.js index 02ae798254cb9..f212ff43bcbe5 100644 --- a/lib/router/router.js +++ b/lib/router/router.js @@ -1,3 +1,5 @@ +/* global __NEXT_DATA__ */ + import { parse, format } from 'url' import evalScript from '../eval-script' import shallowEquals from '../shallow-equals' @@ -210,7 +212,7 @@ export default class Router extends EventEmitter { } } - const url = `/_next/pages${route}` + const url = `/_next/${__NEXT_DATA__.buildId}/pages${route}` const xhr = loadComponent(url, (err, data) => { if (err) return reject(err) resolve({ diff --git a/package.json b/package.json index 7df095c8ad063..99bd6cb985d6a 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "strip-ansi": "3.0.1", "styled-jsx": "0.4.1", "url": "0.11.0", + "uuid": "3.0.1", "webpack": "2.2.0-rc.3", "webpack-dev-middleware": "1.9.0", "webpack-hot-middleware": "2.15.0", diff --git a/server/build/index.js b/server/build/index.js index e4fcb84574c05..482626deefef2 100644 --- a/server/build/index.js +++ b/server/build/index.js @@ -1,3 +1,6 @@ +import fs from 'mz/fs' +import uuid from 'uuid' +import path from 'path' import webpack from './webpack' import clean from './clean' import gzipAssets from './gzip' @@ -10,6 +13,7 @@ export default async function build (dir) { await runCompiler(compiler) await gzipAssets(dir) + await writeBuildId(dir) } function runCompiler (compiler) { @@ -29,3 +33,9 @@ function runCompiler (compiler) { }) }) } + +async function writeBuildId (dir) { + const buildIdPath = path.resolve(dir, '.next', 'BUILD_ID') + const buildId = uuid.v4() + await fs.writeFile(buildIdPath, buildId, 'utf8') +} diff --git a/server/document.js b/server/document.js index 49f75272251d2..ed970b2e6cecb 100644 --- a/server/document.js +++ b/server/document.js @@ -85,11 +85,12 @@ export class NextScript extends Component { } render () { - const { staticMarkup } = this.context._documentProps + const { staticMarkup, __NEXT_DATA__ } = this.context._documentProps + let { buildId } = __NEXT_DATA__ return
- { staticMarkup ? null :