diff --git a/local-cli/server/findSymlinksPaths.js b/local-cli/server/findSymlinksPaths.js new file mode 100644 index 000000000..804e1d488 --- /dev/null +++ b/local-cli/server/findSymlinksPaths.js @@ -0,0 +1,15 @@ +const path = require('path'); +const fs = require('fs'); + +module.exports = function findSymlinksPaths(lookupFolder) { + const timeStart = Date.now(); + const folders = fs.readdirSync(lookupFolder); + const resolvedSymlinks = folders.map(folder => path.resolve(lookupFolder, folder)) + .filter(folderPath => fs.lstatSync(folderPath).isSymbolicLink()) + .map(symlink => path.resolve(process.cwd(), fs.readlinkSync(symlink))); + const timeEnd = Date.now(); + + console.log(`Scanning ${folders.length} folders for symlinks in ${lookupFolder} (${timeEnd - timeStart}ms)`); + + return resolvedSymlinks; +}; diff --git a/local-cli/server/server.js b/local-cli/server/server.js index 945accf85..ef1cc65ec 100644 --- a/local-cli/server/server.js +++ b/local-cli/server/server.js @@ -12,12 +12,16 @@ const chalk = require('chalk'); const formatBanner = require('./formatBanner'); const path = require('path'); const runServer = require('./runServer'); +const findSymlinksPaths = require('./findSymlinksPaths'); /** * Starts the React Native Packager Server. */ function server(argv, config, args) { - args.projectRoots = args.projectRoots.concat(args.root); + args.projectRoots = args.projectRoots.concat( + args.root, + findSymlinkPaths(path.resolve(process.cwd(), 'node_modules')) + ); console.log(formatBanner( 'Running packager on port ' + args.port + '.\n\n' +