File tree Expand file tree Collapse file tree 12 files changed +127
-5
lines changed
packages/vite/src/node/plugins
playground/resolve-optimized-dup-deps Expand file tree Collapse file tree 12 files changed +127
-5
lines changed Original file line number Diff line number Diff line change @@ -874,13 +874,15 @@ export async function tryOptimizedResolve(
874
874
875
875
const metadata = depsOptimizer . metadata
876
876
877
- const depInfo = optimizedDepInfoFromId ( metadata , id )
878
- if ( depInfo ) {
879
- return depsOptimizer . getOptimizedDepId ( depInfo )
877
+ if ( ! importer ) {
878
+ // no importer. try our best to find an optimized dep
879
+ const depInfo = optimizedDepInfoFromId ( metadata , id )
880
+ if ( depInfo ) {
881
+ return depsOptimizer . getOptimizedDepId ( depInfo )
882
+ }
883
+ return
880
884
}
881
885
882
- if ( ! importer ) return
883
-
884
886
// further check if id is imported by nested dependency
885
887
let resolvedSrc : string | undefined
886
888
Original file line number Diff line number Diff line change
1
+ import { expect , test } from 'vitest'
2
+ import { page } from '~utils'
3
+
4
+ test ( 'resolve-optimized-dup-deps' , async ( ) => {
5
+ expect ( await page . textContent ( '.a' ) ) . toBe ( 'test-package-a:test-package-b-v2' )
6
+ expect ( await page . textContent ( '.b' ) ) . toBe ( 'test-package-b-v1' )
7
+ } )
Original file line number Diff line number Diff line change
1
+ < h2 > direct dependency A</ h2 >
2
+ < pre class ="a "> </ pre >
3
+
4
+ < h2 > direct dependency B</ h2 >
5
+ < pre class ="b "> </ pre >
6
+
7
+ < script type ="module ">
8
+ import A from '@vitejs/test-resolve-optimized-dup-deps-package-a'
9
+ import B from '@vitejs/test-resolve-optimized-dup-deps-package-b'
10
+
11
+ text ( '.a' , A )
12
+ text ( '.b' , B )
13
+
14
+ function text ( sel , text ) {
15
+ document . querySelector ( sel ) . textContent = text
16
+ }
17
+ </ script >
Original file line number Diff line number Diff line change
1
+ import b from '@vitejs/test-resolve-optimized-dup-deps-package-b'
2
+
3
+ // should get test-package-a:test-package-b-v2
4
+ const result = 'test-package-a:' + b
5
+
6
+ export default result
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " @vitejs/test-resolve-optimized-dup-deps-package-a" ,
3
+ "private" : true ,
4
+ "version" : " 1.0.0" ,
5
+ "main" : " index.js" ,
6
+ "dependencies" : {
7
+ "@vitejs/test-resolve-optimized-dup-deps-package-b" : " file:../package-b-v2"
8
+ }
9
+ }
Original file line number Diff line number Diff line change
1
+ // test-package-b-v1 is install and imported by user
2
+ // it is written in cjs and should be optimized
3
+ module . exports = 'test-package-b-v1'
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " @vitejs/test-resolve-optimized-dup-deps-package-b" ,
3
+ "private" : true ,
4
+ "version" : " 1.0.0" ,
5
+ "main" : " index.js"
6
+ }
Original file line number Diff line number Diff line change
1
+ // test-package-b-v2 is install and imported by test-package-a
2
+ // it is written in esm. it is not optimized
3
+ export default 'test-package-b-v2'
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " @vitejs/test-resolve-optimized-dup-deps-package-b" ,
3
+ "private" : true ,
4
+ "version" : " 2.0.0" ,
5
+ "main" : " index.js"
6
+ }
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " @vitejs/test-resolve-optimized-dup-deps" ,
3
+ "private" : true ,
4
+ "version" : " 0.0.0" ,
5
+ "scripts" : {
6
+ "dev" : " vite" ,
7
+ "build" : " vite build" ,
8
+ "debug" : " node --inspect-brk ../../packages/vite/bin/vite" ,
9
+ "preview" : " vite preview"
10
+ },
11
+ "dependencies" : {
12
+ "@vitejs/test-resolve-optimized-dup-deps-package-a" : " file:./package-a" ,
13
+ "@vitejs/test-resolve-optimized-dup-deps-package-b" : " file:./package-b-v1"
14
+ }
15
+ }
You can’t perform that action at this time.
0 commit comments