Skip to content

Commit

Permalink
fix dev server, improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
nitedani committed Dec 16, 2023
1 parent 4b9611b commit 725d71a
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 34 deletions.
17 changes: 6 additions & 11 deletions vike/node/dev/devServerPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ function devServerPlugin(): Plugin {

return {
name: 'vike:devServer',
enforce: 'pre',
enforce: 'post',
config() {
return {
server: {
Expand All @@ -107,23 +107,18 @@ function devServerPlugin(): Plugin {
}
},
configureServer(server) {
// This is only true if the vite config was changed
// We need a full reload
if (viteServer) {
process.exit(33)
}
viteServer = server
if (!patchedHttp) {
patchedHttp = true
patchHttp()
}

loadEntry()
},
// on vite config update
async buildEnd() {
const { reload } = getServerConfig()!
if (reload === 'fast') {
await closeAllServers()
} else {
process.exit(33)
}
},
async handleHotUpdate(ctx) {
if (ctx.modules.some((module) => module.id && entryDeps.has(module.id))) {
const { reload } = getServerConfig()!
Expand Down
20 changes: 6 additions & 14 deletions vike/node/plugin/plugins/serverEntryPlugin.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
export type { ServerConfigResolved }
export { getServerConfig, serverEntryPlugin }

import type { Plugin } from 'vite'
import type { ConfigVikeUserProvided } from '../../../shared/ConfigVike.js'
import type { ConfigVikeUserProvided, ServerResolved } from '../../../shared/ConfigVike.js'
import { assertUsage, getGlobalObject } from '../utils.js'
import { standalonePlugin } from './standalonePlugin.js'
import path from 'path'

type ServerConfigResolved =
| {
entry: string
reload: 'reliable' | 'fast'
}
| undefined

const globalObject = getGlobalObject<{
serverConfig: ServerConfigResolved
serverConfig: ServerResolved
}>('serverEntryPlugin.ts', {
serverConfig: undefined
})
Expand Down Expand Up @@ -66,18 +58,18 @@ function serverEntryPlugin(configVike?: ConfigVikeUserProvided): Plugin[] {
].filter(Boolean) as Plugin[]
}

function resolveServerConfig(configVike?: ConfigVikeUserProvided) {
function resolveServerConfig(configVike?: ConfigVikeUserProvided): ServerResolved {
if (!configVike?.server) {
return undefined
}

if (typeof configVike.server === 'object') {
assertUsage(typeof configVike.server.entry === 'string', 'server.entry should be a string')
assertUsage(['reliable', 'fast'].includes(configVike.server.reload), 'server.reload should be "reliable" or "fast"')
assertUsage(['full', 'fast'].includes(configVike.server.reload), 'server.reload should be "full" or "fast"')

return { entry: configVike.server.entry, reload: configVike.server.reload } as const
return { entry: configVike.server.entry, reload: configVike.server.reload }
}

assertUsage(typeof configVike.server === 'string', 'server should be a string')
return { entry: configVike.server, reload: 'reliable' } as const
return { entry: configVike.server, reload: 'full' }
}
13 changes: 5 additions & 8 deletions vike/node/plugin/plugins/standalonePlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,7 @@ function standalonePlugin({ serverEntry }: { serverEntry: string }): Plugin {
}
}

//TODO: do we need this file?
try {
await fs.rm(path.posix.join(outDirAbs, 'importBuild.mjs'))
} catch (error) {}
await fs.rm(path.posix.join(outDirAbs, 'importBuild.mjs')).catch(() => {})

const base = toPosixPath(searchForWorkspaceRoot(root))
const relativeRoot = path.posix.relative(base, root)
Expand All @@ -110,10 +107,6 @@ function standalonePlugin({ serverEntry }: { serverEntry: string }): Plugin {
base
})

if (result.warnings.size && isYarnPnP()) {
assertUsage(false, 'Yarn PnP is not supported when using native dependencies.')
}

const tracedDeps = new Set<string>()
for (const file of result.fileList) {
if (result.reasons.get(file)?.type.includes('initial')) {
Expand All @@ -129,6 +122,10 @@ function standalonePlugin({ serverEntry }: { serverEntry: string }): Plugin {
return
}

if (result.warnings.size && isYarnPnP()) {
assertUsage(false, 'Standalone build is not supported when using Yarn PnP and native dependencies.')
}

const commonAncestor = findCommonAncestor(files)

const concurrencyLimit = pLimit(10)
Expand Down
6 changes: 5 additions & 1 deletion vike/shared/ConfigVike.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export type { ConfigVikeUserProvided }
export type { ConfigVikeResolved }
export type { ExtensionResolved }
export type { ServerResolved }

type ExtensionUserProvided = {
npmPackageName: string
Expand All @@ -24,6 +25,9 @@ type ExtensionResolved = {
pageConfigsSrcDir: null | string
assetsDir: null | string
}
type ReloadStrategy = 'fast' | 'full'
type ServerUserProvided = string | { entry: string; reload: ReloadStrategy }
type ServerResolved = undefined | { entry: string; reload: ReloadStrategy }

type ConfigVikeResolved = {
prerender:
Expand Down Expand Up @@ -145,7 +149,7 @@ type ConfigVikeUserProvided = {
/** Server entry path.
*
*/
server?: string | { entry: string; reload: 'fast' | 'reliable' }
server?: ServerUserProvided

/** Enable standalone build.
* Setting `server` is required.
Expand Down

0 comments on commit 725d71a

Please sign in to comment.