Skip to content

Commit f377a84

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

1 file changed

Lines changed: 20 additions & 14 deletions

File tree

‎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(typeofsideEffects==='boolean'){
177177
hasSideEffects=()=>sideEffects
178178
}elseif(Array.isArray(sideEffects)){
179-
constfinalPackageSideEffects=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-
returnsideEffect
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+
constfinalPackageSideEffects=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+
returnsideEffect
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)