diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index 9378d490531aea..c1c91bd61500e1 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -1,5 +1,6 @@ import fs from 'fs' import path from 'path' +import chalk from 'chalk' import { resolveConfig, UserConfig, ResolvedConfig } from './config' import Rollup, { Plugin, @@ -13,7 +14,6 @@ import Rollup, { } from 'rollup' import { buildReporterPlugin } from './plugins/reporter' import { buildDefinePlugin } from './plugins/define' -import chalk from 'chalk' import { buildHtmlPlugin } from './plugins/html' import { buildEsbuildPlugin } from './plugins/esbuild' import { terserPlugin } from './plugins/terser' @@ -110,6 +110,10 @@ export interface BuildOptions { * configurations that are suitable for distributing libraries. */ lib?: LibraryOptions | false + /** + * @internal for now + */ + ssr?: boolean } export interface LibraryOptions { @@ -137,6 +141,7 @@ export function resolveBuildOptions( write: true, manifest: false, lib: false, + ssr: false, ...raw } @@ -344,10 +349,19 @@ export function onRollupWarning( allowNodeBuiltins: string[] = [], userOnWarn?: WarningHandlerWithDefault ) { + function doWarn() { + if (userOnWarn) { + userOnWarn(warning, warn) + } else { + warn(warning) + } + } + if (warning.code === 'UNRESOLVED_IMPORT') { let message: string const id = warning.source const importer = warning.importer + if (id && isBuiltin(id)) { let importingDep if (importer) { @@ -377,6 +391,7 @@ export function onRollupWarning( } throw new Error(message) } + if ( warning.plugin === 'rollup-plugin-dynamic-import-variables' && dynamicImportWarningIgnoreList.some((msg) => warning.message.includes(msg)) @@ -385,10 +400,6 @@ export function onRollupWarning( } if (!warningIgnoreList.includes(warning.code!)) { - if (userOnWarn) { - userOnWarn(warning, warn) - } else { - warn(warning) - } + doWarn() } } diff --git a/packages/vite/src/node/plugins/resolve.ts b/packages/vite/src/node/plugins/resolve.ts index f1471def6256f5..7ce0bb47cceb35 100644 --- a/packages/vite/src/node/plugins/resolve.ts +++ b/packages/vite/src/node/plugins/resolve.ts @@ -15,7 +15,7 @@ import { fsPathFromId, resolveFrom } from '../utils' -import { ViteDevServer } from '..' +import { ResolvedConfig, ViteDevServer } from '..' import slash from 'slash' import { createFilter } from '@rollup/pluginutils' import { PartialResolvedId } from 'rollup' @@ -47,7 +47,8 @@ export function resolvePlugin({ asSrc, dedupe }: ResolveOptions): Plugin { - let server: ViteDevServer + let config: ResolvedConfig | undefined + let server: ViteDevServer | undefined return { name: 'vite:resolve', @@ -56,9 +57,18 @@ export function resolvePlugin({ server = _server }, + configResolved(_config) { + config = _config + }, + resolveId(id, importer) { let res + // fast path for commonjs proxy modules + if (/\?commonjs/.test(id) || id === 'commonjsHelpers.js') { + return + } + // explicit fs paths that starts with /@fs/* if (asSrc && id.startsWith(FS_PREFIX)) { const fsPath = fsPathFromId(id) @@ -117,7 +127,8 @@ export function resolvePlugin({ // bare package imports, perform node resolve if (bareImportRE.test(id)) { - if (isBuild && isBuiltin(id)) { + // externalize node built-ins only when building for ssr + if (isBuild && config && config.build.ssr && isBuiltin(id)) { return { id, external: true