@@ -3,7 +3,7 @@ import * as pathUtils from 'common/utils/path';
33import resolve from 'browser-resolve' ;
44
55import type { Module } from '../entities/module' ;
6- import Manager from '../manager' ;
6+ import Manager , { Manifest } from '../manager' ;
77
88import DependencyNotFoundError from '../../errors/dependency-not-found-error' ;
99import getDependencyName from '../utils/get-dependency-name' ;
@@ -31,12 +31,14 @@ export function getCombinedMetas() {
3131
3232function normalize ( depName : string , files : MetaFiles , fileObject : Meta = { } ) {
3333 for ( let i = 0 ; i < files . length ; i += 1 ) {
34- const absolutePath = pathUtils . join (
35- '/node_modules' ,
36- depName ,
37- files [ i ] . path
38- ) ;
39- fileObject [ absolutePath ] = true ; // eslint-disable-line no-param-reassign
34+ if ( files [ i ] . type === 'file' ) {
35+ const absolutePath = pathUtils . join (
36+ '/node_modules' ,
37+ depName ,
38+ files [ i ] . path
39+ ) ;
40+ fileObject [ absolutePath ] = true ; // eslint-disable-line no-param-reassign
41+ }
4042
4143 if ( files [ i ] . files ) {
4244 normalize ( depName , files [ i ] . files , fileObject ) ;
@@ -91,28 +93,36 @@ function downloadDependency(depName: string, depVersion: string, path: string) {
9193 return packages [ path ] ;
9294}
9395
94- export default async function fetchModule (
95- path : string ,
96- currentPath : string ,
97- manager : Manager ,
98- defaultExtensions : Array < string > = [ 'js' , 'jsx' , 'json' ]
99- ) : Promise < Module > {
100- const dependencyName = getDependencyName ( path ) ;
101-
96+ function findDependencyVersion ( manifest : Manifest , dependencyName : string ) {
10297 let version = null ;
10398
104- if ( manager . manifest . dependencyDependencies [ dependencyName ] ) {
105- version = manager . manifest . dependencyDependencies [ dependencyName ] . resolved ;
99+ if ( manifest . dependencyDependencies [ dependencyName ] ) {
100+ version = manifest . dependencyDependencies [ dependencyName ] . resolved ;
106101 } else {
107- const dep = manager . manifest . dependencies . find (
108- m => m . name === dependencyName
109- ) ;
102+ const dep = manifest . dependencies . find ( m => m . name === dependencyName ) ;
110103
111104 if ( dep ) {
112105 version = dep . version ;
113106 }
114107 }
115108
109+ if ( version ) {
110+ return version ;
111+ }
112+
113+ return null ;
114+ }
115+
116+ export default async function fetchModule (
117+ path : string ,
118+ currentPath : string ,
119+ manager : Manager ,
120+ defaultExtensions : Array < string > = [ 'js' , 'jsx' , 'json' ]
121+ ) : Promise < Module > {
122+ const dependencyName = getDependencyName ( path ) ;
123+
124+ const version = findDependencyVersion ( manager . manifest , dependencyName ) ;
125+
116126 if ( ! version ) {
117127 throw new DependencyNotFoundError ( path ) ;
118128 }
@@ -132,14 +142,19 @@ export default async function fetchModule(
132142 return callback ( null , manager . transpiledModules [ p ] . module . code ) ;
133143 }
134144
135- const depName = getDependencyName ( p ) ;
136- const depInfo = manager . manifest . dependencyDependencies [ depName ] ;
145+ const depPath = p . replace ( '/node_modules/' , '' ) ;
146+ const depName = getDependencyName ( depPath ) ;
147+
148+ const subDepVersion = findDependencyVersion (
149+ manager . manifest ,
150+ depName
151+ ) ;
137152
138- if ( depInfo ) {
153+ if ( subDepVersion ) {
139154 try {
140155 const module = await downloadDependency (
141156 depName ,
142- depInfo . resolved ,
157+ subDepVersion ,
143158 p
144159 ) ;
145160
0 commit comments