Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7200dee

Browse files
authored
fix: correct the behavior when multiple transform filter options are specified (#19818)
1 parentb125172 commit7200dee

File tree

3 files changed

+61
-51
lines changed

3 files changed

+61
-51
lines changed

‎packages/vite/src/node/__tests__/plugins/pluginFilter.spec.ts‎

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import util from 'node:util'
22
importpathfrom'node:path'
33
import{describe,expect,test}from'vitest'
44
import{
5-
FALLBACK_FALSE,
6-
FALLBACK_TRUE,
75
createCodeFilter,
86
createFilterForTransform,
97
createIdFilter,
@@ -16,37 +14,37 @@ describe('createIdFilter', () => {
1614
inputFilter:'foo.js',
1715
cases:[
1816
{id:'foo.js',expected:true},
19-
{id:'foo.ts',expected:FALLBACK_FALSE},
20-
{id:'\0foo.js',expected:FALLBACK_FALSE},
21-
{id:'\0'+path.resolve('foo.js'),expected:FALLBACK_FALSE},
17+
{id:'foo.ts',expected:false},
18+
{id:'\0foo.js',expected:false},
19+
{id:'\0'+path.resolve('foo.js'),expected:false},
2220
],
2321
},
2422
{
2523
inputFilter:['foo.js'],
2624
cases:[
2725
{id:'foo.js',expected:true},
28-
{id:'foo.ts',expected:FALLBACK_FALSE},
26+
{id:'foo.ts',expected:false},
2927
],
3028
},
3129
{
3230
inputFilter:{include:'foo.js'},
3331
cases:[
3432
{id:'foo.js',expected:true},
35-
{id:'foo.ts',expected:FALLBACK_FALSE},
33+
{id:'foo.ts',expected:false},
3634
],
3735
},
3836
{
3937
inputFilter:{include:'*.js'},
4038
cases:[
4139
{id:'foo.js',expected:true},
42-
{id:'foo.ts',expected:FALLBACK_FALSE},
40+
{id:'foo.ts',expected:false},
4341
],
4442
},
4543
{
4644
inputFilter:{include:/\.js$/},
4745
cases:[
4846
{id:'foo.js',expected:true},
49-
{id:'foo.ts',expected:FALLBACK_FALSE},
47+
{id:'foo.ts',expected:false},
5048
],
5149
},
5250
{
@@ -56,50 +54,50 @@ describe('createIdFilter', () => {
5654
...(process.platform==='win32'
5755
?[{id:'a\\foo.js',expected:true}]
5856
:[]),
59-
{id:'a_foo.js',expected:FALLBACK_FALSE},
57+
{id:'a_foo.js',expected:false},
6058
],
6159
},
6260
{
6361
inputFilter:{include:[/\.js$/]},
6462
cases:[
6563
{id:'foo.js',expected:true},
66-
{id:'foo.ts',expected:FALLBACK_FALSE},
64+
{id:'foo.ts',expected:false},
6765
],
6866
},
6967
{
7068
inputFilter:{exclude:'foo.js'},
7169
cases:[
7270
{id:'foo.js',expected:false},
73-
{id:'foo.ts',expected:FALLBACK_TRUE},
71+
{id:'foo.ts',expected:true},
7472
],
7573
},
7674
{
7775
inputFilter:{exclude:'*.js'},
7876
cases:[
7977
{id:'foo.js',expected:false},
80-
{id:'foo.ts',expected:FALLBACK_TRUE},
78+
{id:'foo.ts',expected:true},
8179
],
8280
},
8381
{
8482
inputFilter:{exclude:/\.js$/},
8583
cases:[
8684
{id:'foo.js',expected:false},
87-
{id:'foo.ts',expected:FALLBACK_TRUE},
85+
{id:'foo.ts',expected:true},
8886
],
8987
},
9088
{
9189
inputFilter:{exclude:[/\.js$/]},
9290
cases:[
9391
{id:'foo.js',expected:false},
94-
{id:'foo.ts',expected:FALLBACK_TRUE},
92+
{id:'foo.ts',expected:true},
9593
],
9694
},
9795
{
9896
inputFilter:{include:'foo.js',exclude:'bar.js'},
9997
cases:[
10098
{id:'foo.js',expected:true},
10199
{id:'bar.js',expected:false},
102-
{id:'baz.js',expected:FALLBACK_FALSE},
100+
{id:'baz.js',expected:false},
103101
],
104102
},
105103
{
@@ -140,64 +138,64 @@ describe('createCodeFilter', () => {
140138
inputFilter:'import.meta',
141139
cases:[
142140
{code:'import.meta',expected:true},
143-
{code:'import_meta',expected:FALLBACK_FALSE},
141+
{code:'import_meta',expected:false},
144142
],
145143
},
146144
{
147145
inputFilter:['import.meta'],
148146
cases:[
149147
{code:'import.meta',expected:true},
150-
{code:'import_meta',expected:FALLBACK_FALSE},
148+
{code:'import_meta',expected:false},
151149
],
152150
},
153151
{
154152
inputFilter:{include:'import.meta'},
155153
cases:[
156154
{code:'import.meta',expected:true},
157-
{code:'import_meta',expected:FALLBACK_FALSE},
155+
{code:'import_meta',expected:false},
158156
],
159157
},
160158
{
161159
inputFilter:{include:/import\.\w+/},
162160
cases:[
163161
{code:'import.meta',expected:true},
164-
{code:'import_meta',expected:FALLBACK_FALSE},
162+
{code:'import_meta',expected:false},
165163
],
166164
},
167165
{
168166
inputFilter:{include:[/import\.\w+/]},
169167
cases:[
170168
{code:'import.meta',expected:true},
171-
{code:'import_meta',expected:FALLBACK_FALSE},
169+
{code:'import_meta',expected:false},
172170
],
173171
},
174172
{
175173
inputFilter:{exclude:'import.meta'},
176174
cases:[
177175
{code:'import.meta',expected:false},
178-
{code:'import_meta',expected:FALLBACK_TRUE},
176+
{code:'import_meta',expected:true},
179177
],
180178
},
181179
{
182180
inputFilter:{exclude:/import\.\w+/},
183181
cases:[
184182
{code:'import.meta',expected:false},
185-
{code:'import_meta',expected:FALLBACK_TRUE},
183+
{code:'import_meta',expected:true},
186184
],
187185
},
188186
{
189187
inputFilter:{exclude:[/import\.\w+/]},
190188
cases:[
191189
{code:'import.meta',expected:false},
192-
{code:'import_meta',expected:FALLBACK_TRUE},
190+
{code:'import_meta',expected:true},
193191
],
194192
},
195193
{
196194
inputFilter:{include:'import.meta',exclude:'import_meta'},
197195
cases:[
198196
{code:'import.meta',expected:true},
199197
{code:'import_meta',expected:false},
200-
{code:'importmeta',expected:FALLBACK_FALSE},
198+
{code:'importmeta',expected:false},
201199
],
202200
},
203201
{
@@ -259,7 +257,30 @@ describe('createFilterForTransform', () => {
259257
{id:'foo.js',code:'import.meta',expected:false},
260258
{id:'foo.js',code:'import_meta',expected:false},
261259
{id:'foo.ts',code:'import.meta',expected:true},
262-
{id:'foo.ts',code:'import_meta',expected:true},
260+
{id:'foo.ts',code:'import_meta',expected:false},
261+
],
262+
},
263+
{
264+
inputFilter:[
265+
{include:'a*',exclude:'*b'},
266+
{include:'a',exclude:'b'},
267+
],
268+
cases:[
269+
{id:'ab',code:'',expected:false},
270+
{id:'a',code:'b',expected:false},
271+
{id:'a',code:'',expected:false},
272+
{id:'c',code:'a',expected:false},
273+
{id:'a',code:'a',expected:true},
274+
],
275+
},
276+
{
277+
inputFilter:[{include:'a*',exclude:'*b'},{exclude:'b'}],
278+
cases:[
279+
{id:'ab',code:'',expected:false},
280+
{id:'a',code:'b',expected:false},
281+
{id:'a',code:'',expected:true},
282+
{id:'c',code:'a',expected:false},
283+
{id:'a',code:'a',expected:true},
263284
],
264285
},
265286
]

‎packages/vite/src/node/plugins/index.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { metadataPlugin } from './metadata'
2323
import{dynamicImportVarsPlugin}from'./dynamicImportVars'
2424
import{importGlobPlugin}from'./importMetaGlob'
2525
import{
26-
typePluginFilterWithFallback,
26+
typePluginFilter,
2727
typeTransformHookFilter,
2828
createFilterForTransform,
2929
createIdFilter,
@@ -165,8 +165,8 @@ export function getHookHandler<T extends ObjectHook<Function>>(
165165
}
166166

167167
typeFilterForPluginValue={
168-
resolveId?:PluginFilterWithFallback|undefined
169-
load?:PluginFilterWithFallback|undefined
168+
resolveId?:PluginFilter|undefined
169+
load?:PluginFilter|undefined
170170
transform?:TransformHookFilter|undefined
171171
}
172172
constfilterForPlugin=newWeakMap<Plugin,FilterForPluginValue>()
@@ -184,7 +184,7 @@ export function getCachedFilterForPlugin<
184184
filterForPlugin.set(plugin,filters)
185185
}
186186

187-
letfilter:PluginFilterWithFallback|TransformHookFilter|undefined
187+
letfilter:PluginFilter|TransformHookFilter|undefined
188188
switch(hookName){
189189
case'resolveId':{
190190
constrawFilter=

‎packages/vite/src/node/plugins/pluginFilter.ts‎

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,7 @@ import picomatch from 'picomatch'
33
import{arraify}from'../utils'
44
import{slash}from'../../shared/utils'
55

6-
exportconstFALLBACK_TRUE=1
7-
exportconstFALLBACK_FALSE=0
8-
typeFallbackValues=typeofFALLBACK_TRUE|typeofFALLBACK_FALSE
9-
106
exporttypePluginFilter=(input:string)=>boolean
11-
exporttypePluginFilterWithFallback=(
12-
input:string,
13-
)=>boolean|FallbackValues
147
exporttypeTransformHookFilter=(id:string,code:string)=>boolean
158

169
exporttypeStringFilter<Value=string|RegExp>=
@@ -70,7 +63,7 @@ function patternToCodeFilter(pattern: string | RegExp): PluginFilter {
7063
functioncreateFilter(
7164
exclude:Array<PluginFilter>|undefined,
7265
include:Array<PluginFilter>|undefined,
73-
):PluginFilterWithFallback|undefined{
66+
):PluginFilter|undefined{
7467
if(!exclude&&!include){
7568
return
7669
}
@@ -82,7 +75,7 @@ function createFilter(
8275
if(include?.some((filter)=>filter(input))){
8376
returntrue
8477
}
85-
return!!include&&include.length>0 ?FALLBACK_FALSE :FALLBACK_TRUE
78+
return!!include&&include.length>0 ?false :true
8679
}
8780
}
8881

@@ -106,7 +99,7 @@ function normalizeFilter(filter: StringFilter): NormalizedStringFilter {
10699
exportfunctioncreateIdFilter(
107100
filter:StringFilter|undefined,
108101
cwd=process.cwd(),
109-
):PluginFilterWithFallback|undefined{
102+
):PluginFilter|undefined{
110103
if(!filter)return
111104
const{ exclude, include}=normalizeFilter(filter)
112105
constexcludeFilter=exclude?.map((p)=>patternToIdFilter(p,cwd))
@@ -116,7 +109,7 @@ export function createIdFilter(
116109

117110
exportfunctioncreateCodeFilter(
118111
filter:StringFilter|undefined,
119-
):PluginFilterWithFallback|undefined{
112+
):PluginFilter|undefined{
120113
if(!filter)return
121114
const{ exclude, include}=normalizeFilter(filter)
122115
constexcludeFilter=exclude?.map(patternToCodeFilter)
@@ -135,18 +128,14 @@ export function createFilterForTransform(
135128
return(id,code)=>{
136129
letfallback=true
137130
if(idFilterFn){
138-
constidResult=idFilterFn(id)
139-
if(typeofidResult==='boolean'){
140-
returnidResult
141-
}
142-
fallback&&=!!idResult
131+
fallback&&=idFilterFn(id)
132+
}
133+
if(!fallback){
134+
returnfalse
143135
}
136+
144137
if(codeFilterFn){
145-
constcodeResult=codeFilterFn(code)
146-
if(typeofcodeResult==='boolean'){
147-
returncodeResult
148-
}
149-
fallback&&=!!codeResult
138+
fallback&&=codeFilterFn(code)
150139
}
151140
returnfallback
152141
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp