@@ -239,38 +239,46 @@ Demeteorizer.prototype.findDependenciesInFolder = function (folder, inNodeModule
239
239
if ( keepGoing ) {
240
240
this . findDependenciesInFolder ( path . join ( folder , file ) , inNodeMod , context ) ;
241
241
}
242
- }
243
- else {
242
+ } else {
244
243
if ( file === 'package.json' ) {
245
244
var packageData = fs . readFileSync ( path . join ( folder , file ) ) ;
246
245
247
- // Test that the package.json contains data. There is a module that
248
- // includes a package.json fixture that is empty.
249
- // Let's also test for invalid JSON in the package.json
250
- var packageJson ;
251
- var isValidJSON = true ;
252
- try {
253
- packageJson = JSON . parse ( packageData ) ;
254
- } catch ( e ) {
255
- console . log ( '*** Exception when parsing packageData: ' + e ) ;
256
- console . log ( 'packageData path: ' + path . join ( folder , file ) ) ;
257
- console . log ( 'packageData: ' + packageData ) ;
258
- isValidJSON = false ;
259
- }
260
-
261
- if ( isValidJSON && packageData . length > 0 ) {
262
-
263
- var filtered = this . filterDep ( packageJson . name , packageJson . _resolved || packageJson . version ) ;
264
- if ( filtered ) {
265
- context . dependencies [ filtered . name ] = filtered . version ;
246
+ // Test that the package.json contains data.
247
+ if ( packageData . length > 0 ) {
248
+ var packageJson = null ;
249
+
250
+ try {
251
+ packageJson = JSON . parse ( packageData ) ;
252
+ } catch ( e ) {
253
+ this . emit ( 'progress' , util . format (
254
+ 'Warning: failed to parse package.json for %s' ,
255
+ path . basename ( folder )
256
+ ) ) ;
266
257
}
267
- if ( packageJson . dependencies ) {
268
- Object . keys ( packageJson . dependencies ) . forEach ( function ( dep ) {
269
- var filtered = this . filterDep ( dep , packageJson . dependencies [ dep ] ) ;
270
- if ( filtered ) {
271
- context . dependencies [ filtered . name ] = filtered . version ;
272
- }
273
- } . bind ( this ) ) ;
258
+
259
+ // Only add the dependency if the package is valid.
260
+ if ( packageJson ) {
261
+ var filtered = this . filterDep (
262
+ packageJson . name ,
263
+ packageJson . _resolved || packageJson . version
264
+ ) ;
265
+
266
+ if ( filtered ) {
267
+ context . dependencies [ filtered . name ] = filtered . version ;
268
+ }
269
+
270
+ if ( packageJson . dependencies ) {
271
+ Object . keys ( packageJson . dependencies ) . forEach ( function ( dep ) {
272
+ var filtered = this . filterDep (
273
+ dep ,
274
+ packageJson . dependencies [ dep ]
275
+ ) ;
276
+
277
+ if ( filtered ) {
278
+ context . dependencies [ filtered . name ] = filtered . version ;
279
+ }
280
+ } . bind ( this ) ) ;
281
+ }
274
282
}
275
283
}
276
284
}
0 commit comments