@@ -39,21 +39,31 @@ module.exports = class AddModePlugin {
3939
4040 const queryObj = parseQuery ( request . query || '?' )
4141 const queryInfix = queryObj . infix
42- if ( ! implicitMode ) queryObj . mode = mode
43- queryObj . infix = `${ queryInfix || '' } .${ mode } `
4442
4543 // 如果已经确认是mode后缀的文件,添加query与mode后直接返回
4644 if ( modePattern . test ( path . basename ( resourcePath ) ) ) {
47- request . query = stringifyQuery ( queryObj )
48- request . mode = obj . mode
45+ // 已经被resolved到对应mode的文件,避免重复添加mode
46+ const isResolved = ( implicitMode || queryObj . mode === mode ) && modePattern . test ( queryObj . infix )
47+ if ( ! isResolved ) {
48+ queryObj . infix = `${ queryInfix || '' } .${ mode } `
49+ if ( ! implicitMode ) queryObj . mode = mode
50+ request . query = stringifyQuery ( queryObj )
51+ request . mode = obj . mode
52+ }
4953 return callback ( )
5054 } else if ( defaultMode && defaultModePattern . test ( path . basename ( resourcePath ) ) ) {
51- queryObj . infix = `${ queryInfix || '' } .${ defaultMode } `
52- request . query = stringifyQuery ( queryObj )
53- request . mode = obj . mode
55+ const isResolved = ( implicitMode || queryObj . mode === mode ) && defaultModePattern . test ( queryObj . infix )
56+ if ( ! isResolved ) {
57+ queryObj . infix = `${ queryInfix || '' } .${ defaultMode } `
58+ if ( ! implicitMode ) queryObj . mode = mode
59+ request . query = stringifyQuery ( queryObj )
60+ request . mode = obj . mode
61+ }
5462 return callback ( )
5563 }
5664
65+ if ( ! implicitMode ) queryObj . mode = mode
66+ queryObj . infix = `${ queryInfix || '' } .${ mode } `
5767 obj . query = stringifyQuery ( queryObj )
5868 obj . path = addInfix ( resourcePath , mode , extname )
5969 obj . relativePath = request . relativePath && addInfix ( request . relativePath , mode , extname )
0 commit comments