From 68747cfb8177cc7de943d22e13ecf66af53f0ab1 Mon Sep 17 00:00:00 2001 From: patak-dev Date: Thu, 23 Jun 2022 20:50:27 +0200 Subject: [PATCH] fix: optimizeDeps.entries transformRequest url (fix #8719) --- packages/vite/src/node/optimizer/optimizer.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/node/optimizer/optimizer.ts b/packages/vite/src/node/optimizer/optimizer.ts index 5592c438ece552..9a331e9db90ab4 100644 --- a/packages/vite/src/node/optimizer/optimizer.ts +++ b/packages/vite/src/node/optimizer/optimizer.ts @@ -1,6 +1,8 @@ +import path from 'node:path' import colors from 'picocolors' import _debug from 'debug' import glob from 'fast-glob' +import { FS_PREFIX } from '../constants' import { getHash } from '../utils' import { transformRequest } from '../server/transformRequest' import type { ResolvedConfig, ViteDevServer } from '..' @@ -585,17 +587,21 @@ export async function preTransformOptimizeDepsEntries( server: ViteDevServer ): Promise { const { config } = server + const { root } = config const { entries } = config.optimizeDeps if (entries) { const explicitEntries = await glob(entries, { - cwd: config.root, + cwd: root, ignore: ['**/node_modules/**', `**/${config.build.outDir}/**`], absolute: true }) // TODO: should we restrict the entries to JS and HTML like the // scanner did? I think we can let the user chose any entry for (const entry of explicitEntries) { - transformRequest(entry, server, { ssr: false }).catch((e) => { + const url = entry.startsWith(root + '/') + ? entry.slice(root.length) + : path.posix.join(FS_PREFIX + entry) + transformRequest(url, server, { ssr: false }).catch((e) => { config.logger.error(e.message) }) }