提交 64379ee3 编写于 作者: T Tim Neutkens 提交者: Arunoda Susiripala

Get config from one location (#3801)

* Remove obsolete clean.js

* Remove unused root-module-relative-path

* Single source of configuration

* Fix next export
上级 4469bd05
import { resolve } from 'path'
import del from 'del'
import getConfig from '../config'
export default function clean (dir) {
const dist = getConfig(dir).distDir
return del(resolve(dir, dist), { force: true })
}
// Next.js needs to use module.resolve to generate paths to modules it includes,
// but those paths need to be relative to something so that they're portable
// across directories and machines.
//
// This function returns paths relative to the top-level 'node_modules'
// directory found in the path. If none is found, returns the complete path.
import { sep } from 'path'
const RELATIVE_START = `node_modules${sep}`
// Pass in the module's `require` object since it's module-specific.
export default (moduleRequire) => (path) => {
// package.json removed because babel-runtime is resolved as
// "babel-runtime/package"
const absolutePath = moduleRequire.resolve(path)
.replace(/[\\/]package\.json$/, '')
const relativeStartIndex = absolutePath.indexOf(RELATIVE_START)
if (relativeStartIndex === -1) {
return absolutePath
}
return absolutePath.substring(relativeStartIndex + RELATIVE_START.length)
}
......@@ -85,6 +85,7 @@ export default async function (dir, options, configuration) {
// Start the rendering process
const renderOpts = {
dir,
dist: config.distDir,
buildStats,
buildId,
nextExport: true,
......
import { join, relative, sep } from 'path'
import WebpackDevMiddleware from 'webpack-dev-middleware'
import WebpackHotMiddleware from 'webpack-hot-middleware'
import del from 'del'
import onDemandEntryHandler from './on-demand-entry-handler'
import webpack from 'webpack'
import getBaseWebpackConfig from './build/webpack'
import clean from './build/clean'
import getConfig from './config'
import UUID from 'uuid'
import {
IS_BUNDLED_PAGE,
......@@ -13,7 +12,7 @@ import {
} from './utils'
export default class HotReloader {
constructor (dir, { quiet, conf } = {}) {
constructor (dir, { quiet, config } = {}) {
this.dir = dir
this.quiet = quiet
this.middlewares = []
......@@ -32,7 +31,7 @@ export default class HotReloader {
// it should be the same value.
this.buildId = UUID.v4()
this.config = getConfig(dir, conf)
this.config = config
}
async run (req, res) {
......@@ -55,8 +54,12 @@ export default class HotReloader {
}
}
async clean () {
return del(join(this.dir, this.config.distDir), { force: true })
}
async start () {
await clean(this.dir)
await this.clean()
const configs = await Promise.all([
getBaseWebpackConfig(this.dir, { dev: true, isServer: false, config: this.config }),
......@@ -86,7 +89,7 @@ export default class HotReloader {
async reload () {
this.stats = null
await clean(this.dir)
await this.clean()
const configs = await Promise.all([
getBaseWebpackConfig(this.dir, { dev: true, isServer: false, config: this.config }),
......
......@@ -32,11 +32,12 @@ export default class Server {
this.dev = dev
this.quiet = quiet
this.router = new Router()
this.hotReloader = dev ? this.getHotReloader(this.dir, { quiet, conf }) : null
this.http = null
this.config = getConfig(this.dir, conf)
this.dist = this.config.distDir
this.hotReloader = dev ? this.getHotReloader(this.dir, { quiet, config: this.config }) : null
if (dev) {
updateNotifier(pkg, 'next')
}
......@@ -51,6 +52,7 @@ export default class Server {
dev,
staticMarkup,
dir: this.dir,
dist: this.dist,
hotReloader: this.hotReloader,
buildStats: this.buildStats,
buildId: this.buildId,
......@@ -183,8 +185,7 @@ export default class Server {
}
}
const dist = getConfig(this.dir).distDir
const path = join(this.dir, dist, 'bundles', 'pages', `${page}.js.map`)
const path = join(this.dir, this.dist, 'bundles', 'pages', `${page}.js.map`)
await serveStatic(req, res, path)
},
......
......@@ -5,7 +5,6 @@ import send from 'send'
import generateETag from 'etag'
import fresh from 'fresh'
import requirePage from './require'
import getConfig from './config'
import { Router } from '../lib/router'
import { loadGetInitialProps, isResSent } from '../lib/utils'
import { getAvailableChunks } from './utils'
......@@ -41,6 +40,7 @@ async function doRender (req, res, pathname, query, {
hotReloader,
assetPrefix,
availableChunks,
dist,
dir = process.cwd(),
dev = false,
staticMarkup = false,
......@@ -52,8 +52,6 @@ async function doRender (req, res, pathname, query, {
await ensurePage(page, { dir, hotReloader })
}
const dist = getConfig(dir).distDir
const documentPath = join(dir, dist, 'dist', 'bundles', 'pages', '_document')
let Component = requirePage(page, {dir, dist})
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册