fix(bridge): can't enable vite mode (#1505)

This commit is contained in:
Anthony Fu 2021-10-27 17:48:17 +08:00 committed by GitHub
parent e8ea92ce14
commit 7ede9b14d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 21 deletions

View File

@ -51,7 +51,7 @@ export default defineNuxtModule({
await setupAutoImports()
}
if (opts.vite) {
const viteModule = await import('./vite/module')
const viteModule = await import('./vite/module').then(r => r.default || r)
await installModule(nuxt, viteModule)
}
if (opts.postcss8) {

View File

@ -1,5 +1,5 @@
import { resolve } from 'pathe'
import { readJSON, remove, existsSync, readFile, writeFile, mkdirp } from 'fs-extra'
import fse from 'fs-extra'
import { ViteBuildContext } from './types'
import { uniq, isJS, isCSS, hash } from './utils'
@ -17,11 +17,11 @@ const DEFAULT_APP_TEMPLATE = `
export async function prepareManifests (ctx: ViteBuildContext) {
const rDist = (...args: string[]): string => resolve(ctx.nuxt.options.buildDir, 'dist', ...args)
await mkdirp(rDist('server'))
await fse.mkdirp(rDist('server'))
const customAppTemplateFile = resolve(ctx.nuxt.options.srcDir, 'app.html')
const APP_TEMPLATE = existsSync(customAppTemplateFile)
? (await readFile(customAppTemplateFile, 'utf-8'))
const APP_TEMPLATE = fse.existsSync(customAppTemplateFile)
? (await fse.readFile(customAppTemplateFile, 'utf-8'))
: DEFAULT_APP_TEMPLATE
const DEV_TEMPLATE = APP_TEMPLATE
@ -32,8 +32,8 @@ export async function prepareManifests (ctx: ViteBuildContext) {
const SPA_TEMPLATE = ctx.nuxt.options.dev ? DEV_TEMPLATE : APP_TEMPLATE
const SSR_TEMPLATE = ctx.nuxt.options.dev ? DEV_TEMPLATE : APP_TEMPLATE
await writeFile(rDist('server/index.ssr.html'), SSR_TEMPLATE)
await writeFile(rDist('server/index.spa.html'), SPA_TEMPLATE)
await fse.writeFile(rDist('server/index.ssr.html'), SSR_TEMPLATE)
await fse.writeFile(rDist('server/index.spa.html'), SPA_TEMPLATE)
if (ctx.nuxt.options.dev) {
await stubManifest(ctx)
@ -47,7 +47,7 @@ export async function generateBuildManifest (ctx: ViteBuildContext) {
const rDist = (...args: string[]): string => resolve(ctx.nuxt.options.buildDir, 'dist', ...args)
const publicPath = ctx.nuxt.options.app.assetsPath // Default: /nuxt/
const viteClientManifest = await readJSON(rDist('client/manifest.json'))
const viteClientManifest = await fse.readJSON(rDist('client/manifest.json'))
const clientEntries = Object.entries(viteClientManifest)
const asyncEntries = uniq(clientEntries.filter((id: any) => id[1].isDynamicEntry).flatMap(getModuleIds)).filter(Boolean)
@ -93,14 +93,14 @@ export async function generateBuildManifest (ctx: ViteBuildContext) {
maps: {}
}
await writeFile(rDist('client', clientEntryName), clientEntryCode, 'utf-8')
await fse.writeFile(rDist('client', clientEntryName), clientEntryCode, 'utf-8')
await writeClientManifest(clientManifest, ctx.nuxt.options.buildDir)
await writeServerManifest(serverManifest, ctx.nuxt.options.buildDir)
// Remove SSR manifest from public client dir
await remove(rDist('client/manifest.json'))
await remove(rDist('client/ssr-manifest.json'))
await fse.remove(rDist('client/manifest.json'))
await fse.remove(rDist('client/ssr-manifest.json'))
}
// stub manifest on dev
@ -132,7 +132,7 @@ export async function stubManifest (ctx: ViteBuildContext) {
export async function generateDevSSRManifest (ctx: ViteBuildContext) {
const rDist = (...args: string[]): string => resolve(ctx.nuxt.options.buildDir, 'dist', ...args)
const ssrManifest = await readJSON(rDist('server/ssr-manifest.json'))
const ssrManifest = await fse.readJSON(rDist('server/ssr-manifest.json'))
const css = Object.keys(ssrManifest).filter(isCSS)
const entires = [
@ -155,14 +155,14 @@ export async function generateDevSSRManifest (ctx: ViteBuildContext) {
async function writeServerManifest (serverManifest: any, buildDir: string) {
const serverManifestJSON = JSON.stringify(serverManifest, null, 2)
await writeFile(resolve(buildDir, 'dist/server/server.manifest.json'), serverManifestJSON, 'utf-8')
await writeFile(resolve(buildDir, 'dist/server/server.manifest.mjs'), `export default ${serverManifestJSON}`, 'utf-8')
await fse.writeFile(resolve(buildDir, 'dist/server/server.manifest.json'), serverManifestJSON, 'utf-8')
await fse.writeFile(resolve(buildDir, 'dist/server/server.manifest.mjs'), `export default ${serverManifestJSON}`, 'utf-8')
}
async function writeClientManifest (clientManifest: any, buildDir: string) {
const clientManifestJSON = JSON.stringify(clientManifest, null, 2)
await writeFile(resolve(buildDir, 'dist/server/client.manifest.json'), clientManifestJSON, 'utf-8')
await writeFile(resolve(buildDir, 'dist/server/client.manifest.mjs'), `export default ${clientManifestJSON}`, 'utf-8')
await fse.writeFile(resolve(buildDir, 'dist/server/client.manifest.json'), clientManifestJSON, 'utf-8')
await fse.writeFile(resolve(buildDir, 'dist/server/client.manifest.mjs'), `export default ${clientManifestJSON}`, 'utf-8')
}
function getModuleIds ([, value]: [string, any]) {

View File

@ -1,5 +1,5 @@
import type { Plugin } from 'vite'
import { readFile } from 'fs-extra'
import fse from 'fs-extra'
// const PREFIX = 'defaultexport:'
const PREFIX = 'defaultexport:'
@ -25,7 +25,7 @@ export function defaultExportPlugin () {
async load (id) {
if (hasPrefix(id)) {
let code = await readFile(removePrefix(id), 'utf8')
let code = await fse.readFile(removePrefix(id), 'utf8')
if (!hasDefaultExport(code)) {
code = addDefaultExport(code)
}

View File

@ -2,7 +2,7 @@ import { resolve } from 'pathe'
import * as vite from 'vite'
import { createVuePlugin } from 'vite-plugin-vue2'
import consola from 'consola'
import { writeFile } from 'fs-extra'
import fse from 'fs-extra'
import pDebounce from 'p-debounce'
import { bundleRequest } from '../../../vite/src/dev-bundler'
import { ViteBuildContext, ViteOptions } from './types'
@ -95,14 +95,14 @@ export async function buildServer (ctx: ViteBuildContext) {
await viteServer.pluginContainer.buildStart({})
// Generate manifest files
await writeFile(resolve(ctx.nuxt.options.buildDir, 'dist/server/ssr-manifest.json'), JSON.stringify({}, null, 2), 'utf-8')
await fse.writeFile(resolve(ctx.nuxt.options.buildDir, 'dist/server/ssr-manifest.json'), JSON.stringify({}, null, 2), 'utf-8')
await generateDevSSRManifest(ctx)
// Build and watch
const _doBuild = async () => {
const start = Date.now()
const { code } = await bundleRequest({ viteServer }, '/.nuxt/server.js')
await writeFile(resolve(ctx.nuxt.options.buildDir, 'dist/server/server.mjs'), code, 'utf-8')
await fse.writeFile(resolve(ctx.nuxt.options.buildDir, 'dist/server/server.mjs'), code, 'utf-8')
const time = (Date.now() - start)
consola.info(`Server built in ${time}ms`)
await onBuild()