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(
874874
875875 const metadata = depsOptimizer . metadata
876876
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
880884 }
881885
882- if ( ! importer ) return
883-
884886 // further check if id is imported by nested dependency
885887 let resolvedSrc : string | undefined
886888
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