@@ -176,21 +176,27 @@ export function loadPackageData(pkgPath: string): PackageData {
176
176
if ( typeof sideEffects === 'boolean' ) {
177
177
hasSideEffects = ( ) => sideEffects
178
178
} 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
+ } )
190
195
191
- hasSideEffects = createFilter ( finalPackageSideEffects , null , {
192
- resolve : pkgDir ,
193
- } )
196
+ hasSideEffects = createFilter ( finalPackageSideEffects , null , {
197
+ resolve : pkgDir ,
198
+ } )
199
+ }
194
200
} else {
195
201
hasSideEffects = ( ) => null
196
202
}
0 commit comments