mirror of
https://github.com/nuxt/nuxt.git
synced 2025-01-30 23:32:38 +00:00
refactor(vite): reuse common modules (#1723)
This commit is contained in:
parent
39db33d625
commit
ca557e7c0b
@ -1,7 +1,7 @@
|
|||||||
import { resolve } from 'pathe'
|
import { resolve } from 'pathe'
|
||||||
import fse from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
|
import { uniq, isJS, isCSS, hash } from '../../../vite/src/utils'
|
||||||
import { ViteBuildContext } from './types'
|
import { ViteBuildContext } from './types'
|
||||||
import { uniq, isJS, isCSS, hash } from './utils'
|
|
||||||
|
|
||||||
const DEFAULT_APP_TEMPLATE = `
|
const DEFAULT_APP_TEMPLATE = `
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
@ -5,11 +5,11 @@ import consola from 'consola'
|
|||||||
import fse from 'fs-extra'
|
import fse from 'fs-extra'
|
||||||
import pDebounce from 'p-debounce'
|
import pDebounce from 'p-debounce'
|
||||||
import { bundleRequest } from '../../../vite/src/dev-bundler'
|
import { bundleRequest } from '../../../vite/src/dev-bundler'
|
||||||
import { ViteBuildContext, ViteOptions } from './types'
|
import { isCSS } from '../../../vite/src/utils'
|
||||||
import { wpfs } from './utils/wpfs'
|
import { wpfs } from './utils/wpfs'
|
||||||
|
import { ViteBuildContext, ViteOptions } from './types'
|
||||||
import { jsxPlugin } from './plugins/jsx'
|
import { jsxPlugin } from './plugins/jsx'
|
||||||
import { generateDevSSRManifest } from './manifest'
|
import { generateDevSSRManifest } from './manifest'
|
||||||
import { isCSS } from './utils'
|
|
||||||
|
|
||||||
export async function buildServer (ctx: ViteBuildContext) {
|
export async function buildServer (ctx: ViteBuildContext) {
|
||||||
// Workaround to disable HMR
|
// Workaround to disable HMR
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
import type { ViteDevServer } from 'vite'
|
|
||||||
import consola from 'consola'
|
|
||||||
|
|
||||||
export async function warmupViteServer (server: ViteDevServer, entries: string[]) {
|
|
||||||
const warmedUrls = new Set<String>()
|
|
||||||
|
|
||||||
const warmup = async (url: string) => {
|
|
||||||
if (warmedUrls.has(url)) { return undefined }
|
|
||||||
warmedUrls.add(url)
|
|
||||||
try {
|
|
||||||
await server.transformRequest(url)
|
|
||||||
} catch (e) {
|
|
||||||
consola.debug('Warmup for %s failed with: %s', url, e)
|
|
||||||
}
|
|
||||||
const deps = Array.from(server.moduleGraph.urlToModuleMap.get(url)?.importedModules || [])
|
|
||||||
await Promise.all(deps.map(m => warmup(m.url)))
|
|
||||||
}
|
|
||||||
|
|
||||||
await Promise.all(entries.map(entry => warmup(entry)))
|
|
||||||
}
|
|
@ -2,13 +2,13 @@ import { resolve } from 'pathe'
|
|||||||
import * as vite from 'vite'
|
import * as vite from 'vite'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { distDir } from '../dirs'
|
import { distDir } from '../dirs'
|
||||||
|
import { warmupViteServer } from '../../../vite/src/utils/warmup'
|
||||||
import { buildClient } from './client'
|
import { buildClient } from './client'
|
||||||
import { buildServer } from './server'
|
import { buildServer } from './server'
|
||||||
import { defaultExportPlugin } from './plugins/default-export'
|
import { defaultExportPlugin } from './plugins/default-export'
|
||||||
import { jsxPlugin } from './plugins/jsx'
|
import { jsxPlugin } from './plugins/jsx'
|
||||||
import { replace } from './plugins/replace'
|
import { replace } from './plugins/replace'
|
||||||
import { resolveCSSOptions } from './css'
|
import { resolveCSSOptions } from './css'
|
||||||
import { warmupViteServer } from './utils/warmup'
|
|
||||||
import type { Nuxt, ViteBuildContext, ViteOptions } from './types'
|
import type { Nuxt, ViteBuildContext, ViteOptions } from './types'
|
||||||
import { prepareManifests } from './manifest'
|
import { prepareManifests } from './manifest'
|
||||||
|
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
import { createHash } from 'crypto'
|
|
||||||
|
|
||||||
export function hashId (id: string) {
|
|
||||||
return '$id_' + hash(id)
|
|
||||||
}
|
|
||||||
|
|
||||||
export function hash (input: string, length = 8) {
|
|
||||||
return createHash('sha256')
|
|
||||||
.update(input)
|
|
||||||
.digest('hex')
|
|
||||||
.substr(0, length)
|
|
||||||
}
|
|
||||||
|
|
||||||
export function uniq<T> (arr: T[]): T[] {
|
|
||||||
return Array.from(new Set(arr))
|
|
||||||
}
|
|
||||||
|
|
||||||
const IS_CSS_RE = /\.(?:css|scss|sass|postcss|less|stylus|styl)(\?[^.]+)?$/
|
|
||||||
|
|
||||||
export function isCSS (file: string) {
|
|
||||||
return IS_CSS_RE.test(file)
|
|
||||||
}
|
|
@ -8,7 +8,7 @@ export function uniq<T> (arr: T[]): T[] {
|
|||||||
const IS_JS_RE = /\.[cm]?js(\?[^.]+)?$/
|
const IS_JS_RE = /\.[cm]?js(\?[^.]+)?$/
|
||||||
const IS_MODULE_RE = /\.mjs(\?[^.]+)?$/
|
const IS_MODULE_RE = /\.mjs(\?[^.]+)?$/
|
||||||
const HAS_EXT_RE = /[^./]+\.[^./]+$/
|
const HAS_EXT_RE = /[^./]+\.[^./]+$/
|
||||||
const IS_CSS_RE = /\.css(\?[^.]+)?$/
|
const IS_CSS_RE = /\.(?:css|scss|sass|postcss|less|stylus|styl)(\?[^.]+)?$/
|
||||||
|
|
||||||
export function isJS (file: string) {
|
export function isJS (file: string) {
|
||||||
return IS_JS_RE.test(file) || !HAS_EXT_RE.test(file)
|
return IS_JS_RE.test(file) || !HAS_EXT_RE.test(file)
|
@ -1,3 +1,4 @@
|
|||||||
|
import consola from 'consola'
|
||||||
import type { ViteDevServer } from 'vite'
|
import type { ViteDevServer } from 'vite'
|
||||||
|
|
||||||
export async function warmupViteServer (server: ViteDevServer, entries: string[]) {
|
export async function warmupViteServer (server: ViteDevServer, entries: string[]) {
|
||||||
@ -6,7 +7,11 @@ export async function warmupViteServer (server: ViteDevServer, entries: string[]
|
|||||||
const warmup = async (url: string) => {
|
const warmup = async (url: string) => {
|
||||||
if (warmedUrls.has(url)) { return undefined }
|
if (warmedUrls.has(url)) { return undefined }
|
||||||
warmedUrls.add(url)
|
warmedUrls.add(url)
|
||||||
|
try {
|
||||||
await server.transformRequest(url)
|
await server.transformRequest(url)
|
||||||
|
} catch (e) {
|
||||||
|
consola.debug('Warmup for %s failed with: %s', url, e)
|
||||||
|
}
|
||||||
const deps = Array.from(server.moduleGraph.urlToModuleMap.get(url)?.importedModules || [])
|
const deps = Array.from(server.moduleGraph.urlToModuleMap.get(url)?.importedModules || [])
|
||||||
await Promise.all(deps.map(m => warmup(m.url)))
|
await Promise.all(deps.map(m => warmup(m.url)))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user