|
@@ -1,23 +1,25 @@
|
|
var path = require('path'),
|
|
var path = require('path'),
|
|
url = require('url'),
|
|
url = require('url'),
|
|
_ = require('lodash'),
|
|
_ = require('lodash'),
|
|
- findit = require('findit'),
|
|
|
|
|
|
+ readdirp = require('readdirp'),
|
|
fs = require('fs');
|
|
fs = require('fs');
|
|
|
|
|
|
function eachConfigFile(root, callback) {
|
|
function eachConfigFile(root, callback) {
|
|
var result = {files: [], dirs: []};
|
|
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) {
|
|
function transformShimDeps(json) {
|
|
@@ -33,7 +35,7 @@ function transformShimDeps(json) {
|
|
|
|
|
|
function transformPaths(json, root, file, dirs) {
|
|
function transformPaths(json, root, file, dirs) {
|
|
if (json.paths) {
|
|
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 modulePath = specifier === "local" ? path.dirname(file) : dirs[specifier];
|
|
var dir = (path.relative(root, modulePath).split(path.sep).join('/') || ".") + '/';
|
|
var dir = (path.relative(root, modulePath).split(path.sep).join('/') || ".") + '/';
|
|
transformPathArray(json.paths);
|
|
transformPathArray(json.paths);
|
|
@@ -74,12 +76,11 @@ function constructDirMap(dirs) {
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
-function queoeOfFilesToProcess(files, dirMap) {
|
|
|
|
|
|
+function queueOfFilesToProcess(files, dirMap) {
|
|
var firstPass = [], secondPass = [];
|
|
var firstPass = [], secondPass = [];
|
|
for (var i = 0; i < files.length; i++) {
|
|
for (var i = 0; i < files.length; i++) {
|
|
var file = files[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] == ".") {
|
|
if (specifier == "" || specifier[0] == ".") {
|
|
continue;
|
|
continue;
|
|
} else if (specifier == "local") {
|
|
} else if (specifier == "local") {
|
|
@@ -104,7 +105,7 @@ exports.produceConfigObject = function (root, callback) {
|
|
var dirMap = constructDirMap(Object.keys(filesAndDirs.dirs));
|
|
var dirMap = constructDirMap(Object.keys(filesAndDirs.dirs));
|
|
var queue;
|
|
var queue;
|
|
try {
|
|
try {
|
|
- queue = queoeOfFilesToProcess(Object.keys(filesAndDirs.files), dirMap);
|
|
|
|
|
|
+ queue = queueOfFilesToProcess(Object.keys(filesAndDirs.files), dirMap);
|
|
} catch (e) {
|
|
} catch (e) {
|
|
callback(e);
|
|
callback(e);
|
|
return;
|
|
return;
|
|
@@ -124,5 +125,5 @@ exports.produceConfigObject = function (root, callback) {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
callback(null, result);
|
|
callback(null, result);
|
|
- })
|
|
|
|
|
|
+ });
|
|
};
|
|
};
|