Skip to content

Commit f3a0c3b

Browse files
authored
fix: deep resolve side effects when glob does not contain / (#11807)
1 parent fb77411 commit f3a0c3b

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

packages/vite/src/node/packages.ts

+15-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,21 @@ export function loadPackageData(
100100
if (typeof sideEffects === 'boolean') {
101101
hasSideEffects = () => sideEffects
102102
} else if (Array.isArray(sideEffects)) {
103-
hasSideEffects = createFilter(sideEffects, null, { resolve: pkgDir })
103+
const finalPackageSideEffects = sideEffects.map((sideEffect) => {
104+
/*
105+
* The array accepts simple glob patterns to the relevant files... Patterns like *.css, which do not include a /, will be treated like **\/*.css.
106+
* https://webpack.js.org/guides/tree-shaking/
107+
* https://github.com/vitejs/vite/pull/11807
108+
*/
109+
if (sideEffect.includes('/')) {
110+
return sideEffect
111+
}
112+
return `**/${sideEffect}`
113+
})
114+
115+
hasSideEffects = createFilter(finalPackageSideEffects, null, {
116+
resolve: pkgDir,
117+
})
104118
} else {
105119
hasSideEffects = () => true
106120
}

0 commit comments

Comments
 (0)