path: small speed improvements
This commit is contained in:
parent
9693d3334c
commit
d15bfc04cd
16
lib/path.js
16
lib/path.js
@ -33,7 +33,7 @@ function normalizeArray(parts, allowAboveRoot) {
|
|||||||
var up = 0;
|
var up = 0;
|
||||||
for (var i = parts.length - 1; i >= 0; i--) {
|
for (var i = parts.length - 1; i >= 0; i--) {
|
||||||
var last = parts[i];
|
var last = parts[i];
|
||||||
if (last == '.') {
|
if (last === '.') {
|
||||||
parts.splice(i, 1);
|
parts.splice(i, 1);
|
||||||
} else if (last === '..') {
|
} else if (last === '..') {
|
||||||
parts.splice(i, 1);
|
parts.splice(i, 1);
|
||||||
@ -101,7 +101,7 @@ if (isWindows) {
|
|||||||
path = process.env['=' + resolvedDevice];
|
path = process.env['=' + resolvedDevice];
|
||||||
// Verify that a drive-local cwd was found and that it actually points
|
// Verify that a drive-local cwd was found and that it actually points
|
||||||
// to our drive. If not, default to the drive's root.
|
// to our drive. If not, default to the drive's root.
|
||||||
if (!path || path.slice(0, 3).toLowerCase() !==
|
if (!path || path.substr(0, 3).toLowerCase() !==
|
||||||
resolvedDevice.toLowerCase() + '\\') {
|
resolvedDevice.toLowerCase() + '\\') {
|
||||||
path = resolvedDevice + '\\';
|
path = resolvedDevice + '\\';
|
||||||
}
|
}
|
||||||
@ -191,14 +191,14 @@ if (isWindows) {
|
|||||||
return p && typeof p === 'string';
|
return p && typeof p === 'string';
|
||||||
}
|
}
|
||||||
|
|
||||||
var paths = Array.prototype.slice.call(arguments, 0).filter(f);
|
var paths = Array.prototype.filter.call(arguments, f);
|
||||||
var joined = paths.join('\\');
|
var joined = paths.join('\\');
|
||||||
|
|
||||||
// Make sure that the joined path doesn't start with two slashes
|
// Make sure that the joined path doesn't start with two slashes
|
||||||
// - it will be mistaken for an unc path by normalize() -
|
// - it will be mistaken for an unc path by normalize() -
|
||||||
// unless the paths[0] also starts with two slashes
|
// unless the paths[0] also starts with two slashes
|
||||||
if (/^[\\\/]{2}/.test(joined) && !/^[\\\/]{2}/.test(paths[0])) {
|
if (/^[\\\/]{2}/.test(joined) && !/^[\\\/]{2}/.test(paths[0])) {
|
||||||
joined = joined.slice(1);
|
joined = joined.substr(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return exports.normalize(joined);
|
return exports.normalize(joined);
|
||||||
@ -307,7 +307,7 @@ if (isWindows) {
|
|||||||
// posix version
|
// posix version
|
||||||
exports.normalize = function(path) {
|
exports.normalize = function(path) {
|
||||||
var isAbsolute = path.charAt(0) === '/',
|
var isAbsolute = path.charAt(0) === '/',
|
||||||
trailingSlash = path.slice(-1) === '/';
|
trailingSlash = path.substr(-1) === '/';
|
||||||
|
|
||||||
// Normalize the path
|
// Normalize the path
|
||||||
path = normalizeArray(path.split('/').filter(function(p) {
|
path = normalizeArray(path.split('/').filter(function(p) {
|
||||||
@ -393,7 +393,7 @@ exports.dirname = function(path) {
|
|||||||
|
|
||||||
if (dir) {
|
if (dir) {
|
||||||
// It has a dirname, strip trailing slash
|
// It has a dirname, strip trailing slash
|
||||||
dir = dir.substring(0, dir.length - 1);
|
dir = dir.substr(0, dir.length - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return root + dir;
|
return root + dir;
|
||||||
@ -434,11 +434,11 @@ if (isWindows) {
|
|||||||
|
|
||||||
var resolvedPath = exports.resolve(path);
|
var resolvedPath = exports.resolve(path);
|
||||||
|
|
||||||
if (resolvedPath.match(/^[a-zA-Z]\:\\/)) {
|
if (/^[a-zA-Z]\:\\/.test(resolvedPath)) {
|
||||||
// path is local filesystem path, which needs to be converted
|
// path is local filesystem path, which needs to be converted
|
||||||
// to long UNC path.
|
// to long UNC path.
|
||||||
return '\\\\?\\' + resolvedPath;
|
return '\\\\?\\' + resolvedPath;
|
||||||
} else if (resolvedPath.match(/^\\\\[^?.]/)) {
|
} else if (/^\\\\[^?.]/.test(resolvedPath)) {
|
||||||
// path is network UNC path, which needs to be converted
|
// path is network UNC path, which needs to be converted
|
||||||
// to long UNC path.
|
// to long UNC path.
|
||||||
return '\\\\?\\UNC\\' + resolvedPath.substring(2);
|
return '\\\\?\\UNC\\' + resolvedPath.substring(2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user