Browse Source

switch to readdirp

findit mysteriously lost some directories
Herbert Vojčík 9 years ago
parent
commit
b99d90d036
2 changed files with 21 additions and 20 deletions
  1. 19 18
      lib/config-builder.js
  2. 2 2
      package.json

+ 19 - 18
lib/config-builder.js

@@ -1,23 +1,25 @@
 var path = require('path'),
     url = require('url'),
     _ = require('lodash'),
-    findit = require('findit'),
+    readdirp = require('readdirp'),
     fs = require('fs');
 
 function eachConfigFile(root, callback) {
     var result = {files: [], dirs: []};
-    var find = findit(root, {followSymlinks: true});
-    find.on('file', function (file, stat) {
-        if (file.match(/\.amd\.json$/)) {
-            result.files[file] = stat;
+    readdirp(
+        {root: root, entryType: 'both'},
+        function (fileInfo) {
+            if (fileInfo.stat.isDirectory()) {
+                result.dirs[fileInfo.fullPath] = fileInfo.stat;
+            } else if (fileInfo.name.match(/\.amd\.json$/)) {
+                result.files[fileInfo.fullPath] = fileInfo.stat;
+            }
+        },
+        function (err, res) {
+            if (err) callback(err);
+            else callback(null, result);
         }
-    });
-    find.on('directory', function (dir, stat, stop) {
-        result.dirs[dir] = stat;
-    });
-    find.on('end', function () {
-        callback(null, result);
-    });
+    );
 }
 
 function transformShimDeps(json) {
@@ -33,7 +35,7 @@ function transformShimDeps(json) {
 
 function transformPaths(json, root, file, dirs) {
    if (json.paths) {
-        var specifier = path.basename(file).replace(/\.amd\.json$/, "");
+        var specifier = path.basename(file, ".amd.json");
         var modulePath = specifier === "local" ? path.dirname(file) : dirs[specifier];
         var dir = (path.relative(root, modulePath).split(path.sep).join('/') || ".") + '/';
         transformPathArray(json.paths);
@@ -74,12 +76,11 @@ function constructDirMap(dirs) {
     return result;
 }
 
-function queoeOfFilesToProcess(files, dirMap) {
+function queueOfFilesToProcess(files, dirMap) {
     var firstPass = [], secondPass = [];
     for (var i = 0; i < files.length; i++) {
         var file = files[i];
-        var basename = path.basename(file);
-        var specifier = basename.replace(/\.amd\.json$/, "");
+        var specifier = path.basename(file, ".amd.json");
         if (specifier == "" || specifier[0] == ".") {
             continue;
         } else if (specifier == "local") {
@@ -104,7 +105,7 @@ exports.produceConfigObject = function (root, callback) {
         var dirMap = constructDirMap(Object.keys(filesAndDirs.dirs));
         var queue;
         try {
-            queue = queoeOfFilesToProcess(Object.keys(filesAndDirs.files), dirMap);
+            queue = queueOfFilesToProcess(Object.keys(filesAndDirs.files), dirMap);
         } catch (e) {
             callback(e);
             return;
@@ -124,5 +125,5 @@ exports.produceConfigObject = function (root, callback) {
             });
         }
         callback(null, result);
-    })
+    });
 };

+ 2 - 2
package.json

@@ -24,7 +24,7 @@
     "node": ">=0.8.0"
   },
   "dependencies": {
-    "lodash": "~2.4.1",
-    "findit": "~1.2.0"
+    "lodash": "^2.4.1",
+    "readdirp": "^1.3.0"
   }
 }