Skip to content

Commit f377a84

Browse files
authored
fix: sideEffects: [] should work as sideEffects: false (#16152)
1 parent 6f77b2b commit f377a84

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

packages/vite/src/node/packages.ts

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -176,21 +176,27 @@ export function loadPackageData(pkgPath: string): PackageData {
176176
if (typeof sideEffects === 'boolean') {
177177
hasSideEffects = () => sideEffects
178178
} else if (Array.isArray(sideEffects)) {
179-
const finalPackageSideEffects = sideEffects.map((sideEffect) => {
180-
/*
181-
* The array accepts simple glob patterns to the relevant files... Patterns like *.css, which do not include a /, will be treated like **\/*.css.
182-
* https://webpack.js.org/guides/tree-shaking/
183-
* https://github.com/vitejs/vite/pull/11807
184-
*/
185-
if (sideEffect.includes('/')) {
186-
return sideEffect
187-
}
188-
return `**/${sideEffect}`
189-
})
179+
if (sideEffects.length <= 0) {
180+
// createFilter always returns true if `includes` is an empty array
181+
// but here we want it to always return false
182+
hasSideEffects = () => false
183+
} else {
184+
const finalPackageSideEffects = sideEffects.map((sideEffect) => {
185+
/*
186+
* The array accepts simple glob patterns to the relevant files... Patterns like *.css, which do not include a /, will be treated like **\/*.css.
187+
* https://webpack.js.org/guides/tree-shaking/
188+
* https://github.com/vitejs/vite/pull/11807
189+
*/
190+
if (sideEffect.includes('/')) {
191+
return sideEffect
192+
}
193+
return `**/${sideEffect}`
194+
})
190195

191-
hasSideEffects = createFilter(finalPackageSideEffects, null, {
192-
resolve: pkgDir,
193-
})
196+
hasSideEffects = createFilter(finalPackageSideEffects, null, {
197+
resolve: pkgDir,
198+
})
199+
}
194200
} else {
195201
hasSideEffects = () => null
196202
}

0 commit comments

Comments
 (0)