Skip to content

Commit b2e75aa

Browse files
authored
feat: add ignoreOutdatedRequests option to optimizeDeps (#21364)
1 parent a4e7980 commit b2e75aa

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

packages/vite/src/node/config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,8 @@ const configDefaults = Object.freeze({
829829
// entries
830830
/** @experimental */
831831
force: false,
832+
/** @experimental */
833+
ignoreOutdatedRequests: false,
832834
},
833835
ssr: ssrConfigDefaults,
834836
environments: {},

packages/vite/src/node/optimizer/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,14 @@ export interface DepOptimizationConfig {
163163
* @experimental
164164
*/
165165
holdUntilCrawlEnd?: boolean
166+
/**
167+
* When enabled, Vite will not throw an error when an outdated optimized
168+
* dependency is requested. Enabling this option may cause a single module
169+
* to have a multiple reference.
170+
* @default false
171+
* @experimental
172+
*/
173+
ignoreOutdatedRequests?: boolean
166174
}
167175

168176
export type DepOptimizationOptions = DepOptimizationConfig & {

packages/vite/src/node/plugins/optimizedDeps.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ export function optimizedDepsPlugin(): Plugin {
5050
// Search in both the currently optimized and newly discovered deps
5151
const info = optimizedDepInfoFromFile(metadata, file)
5252
if (info) {
53-
if (browserHash && info.browserHash !== browserHash) {
53+
if (
54+
browserHash &&
55+
info.browserHash !== browserHash &&
56+
!environment.config.optimizeDeps.ignoreOutdatedRequests
57+
) {
5458
throwOutdatedRequest(id)
5559
}
5660
try {
@@ -65,7 +69,10 @@ export function optimizedDepsPlugin(): Plugin {
6569
const newMetadata = depsOptimizer.metadata
6670
if (metadata !== newMetadata) {
6771
const currentInfo = optimizedDepInfoFromFile(newMetadata!, file)
68-
if (info.browserHash !== currentInfo?.browserHash) {
72+
if (
73+
info.browserHash !== currentInfo?.browserHash &&
74+
!environment.config.optimizeDeps.ignoreOutdatedRequests
75+
) {
6976
throwOutdatedRequest(id)
7077
}
7178
}
@@ -77,7 +84,10 @@ export function optimizedDepsPlugin(): Plugin {
7784
try {
7885
return await fsp.readFile(file, 'utf-8')
7986
} catch {
80-
if (browserHash) {
87+
if (
88+
browserHash &&
89+
!environment.config.optimizeDeps.ignoreOutdatedRequests
90+
) {
8191
// Outdated optimized files loaded after a rerun
8292
throwOutdatedRequest(id)
8393
}

0 commit comments

Comments
 (0)