Skip to content

Commit 9b7f39e

Browse files
author
Matt Hernandez
committed
Updated the handling of invalid package.json
Cleaned up the styling and added a new contributor. <3 Related to #92
1 parent 095544c commit 9b7f39e

File tree

2 files changed

+38
-29
lines changed

2 files changed

+38
-29
lines changed

lib/demeteorizer.js

+36-28
Original file line numberDiff line numberDiff line change
@@ -239,38 +239,46 @@ Demeteorizer.prototype.findDependenciesInFolder = function (folder, inNodeModule
239239
if (keepGoing) {
240240
this.findDependenciesInFolder(path.join(folder, file), inNodeMod, context);
241241
}
242-
}
243-
else {
242+
} else {
244243
if (file === 'package.json') {
245244
var packageData = fs.readFileSync(path.join(folder, file));
246245

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+
));
266257
}
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+
}
274282
}
275283
}
276284
}

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"Brandon Cannaday <[email protected]>",
1515
"Bret Fisher <[email protected]>",
1616
"Matt Hernandez <[email protected]>",
17-
"Tarang Patel <[email protected]>"
17+
"Tarang Patel <[email protected]>",
18+
"Vincil Bishop <[email protected]>"
1819
],
1920
"license": "MIT",
2021
"repository": {

0 commit comments

Comments
 (0)