From 63e329e3884aee0fdfc4089401174c9b769116ef Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Sat, 7 Feb 2015 17:23:25 -0800 Subject: [PATCH] 2015-02-07 updates - Random little fixes | Andres Suarez - Add backButtonTitle to Navigator | Nick Poulden - [react-pacakger] Ignore malformed package.json | Amjad Masad - Renamed hasMove to hasMark | Rich Seymour - Update XMLHttpRequest.ios.js | Nick Poulden - Warn about missing dependencies for issue #16 | Andrew McCloud --- packager.js | 14 +++++++++- .../__tests__/DependencyGraph-test.js | 26 +++++++++++++++++++ .../haste/DependencyGraph/index.js | 10 +++++-- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/packager.js b/packager.js index 4fcee0a3..b59fbb18 100644 --- a/packager.js +++ b/packager.js @@ -3,13 +3,25 @@ */ 'use strict'; +var fs = require('fs'); +var path = require('path'); + +if (!fs.existsSync(path.resolve(__dirname, '..', 'node_modules'))) { + console.log( + '\n' + + 'Could not find dependencies.\n' + + 'Ensure dependencies are installed - ' + + 'run \'npm install\' from project root.\n' + ); + process.exit(); +} + var ReactPackager = require('./react-packager'); var blacklist = require('./blacklist.js'); var connect = require('connect'); var http = require('http'); var launchEditor = require('./launchEditor.js'); var parseCommandLine = require('./parseCommandLine.js'); -var path = require('path'); var options = parseCommandLine([{ command: 'port', diff --git a/react-packager/src/DependencyResolver/haste/DependencyGraph/__tests__/DependencyGraph-test.js b/react-packager/src/DependencyResolver/haste/DependencyGraph/__tests__/DependencyGraph-test.js index 9eeb9685..fbd01725 100644 --- a/react-packager/src/DependencyResolver/haste/DependencyGraph/__tests__/DependencyGraph-test.js +++ b/react-packager/src/DependencyResolver/haste/DependencyGraph/__tests__/DependencyGraph-test.js @@ -122,6 +122,32 @@ describe('DependencyGraph', function() { }); }); + pit('should ignore malformed packages', function() { + var root = '/root'; + fs.__setMockFilesystem({ + 'root': { + 'index.js': [ + '/**', + ' * @providesModule index', + ' */', + 'require("aPackage")', + ].join('\n'), + 'aPackage': { + 'package.json': 'lol', + 'main.js': 'lol' + } + } + }); + + var dgraph = new DependencyGraph({roots: [root], fileWatcher: fileWatcher}); + return dgraph.load().then(function() { + expect(dgraph.getOrderedDependencies('/root/index.js')) + .toEqual([ + {id: 'index', path: '/root/index.js', dependencies: ['aPackage']}, + ]); + }); + }); + pit('can have multiple modules with the same name', function() { var root = '/root'; fs.__setMockFilesystem({ diff --git a/react-packager/src/DependencyResolver/haste/DependencyGraph/index.js b/react-packager/src/DependencyResolver/haste/DependencyGraph/index.js index f80bd0b3..130708b5 100644 --- a/react-packager/src/DependencyResolver/haste/DependencyGraph/index.js +++ b/react-packager/src/DependencyResolver/haste/DependencyGraph/index.js @@ -267,9 +267,15 @@ DependecyGraph.prototype._findAndProcessPackage = function(files, root) { if (packagePath != null) { return readFile(packagePath, 'utf8') .then(function(content) { - var packageJson = JSON.parse(content); - if (packageJson.name == null) { + var packageJson; + try { + packageJson = JSON.parse(content); + } catch (e) { + debug('WARNING: malformed package.json: ', packagePath); + return q(); + } + if (packageJson.name == null) { debug( 'WARNING: package.json `%s` is missing a name field', packagePath