resolver/path.js
function resolve() {
		var resolvedPath = '';
		var resolvedAbsolute = false;
		var cwd;

		for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
			var path;
			if (i >= 0) path = arguments[i];else {
				if (cwd === undefined) cwd = process.cwd();
				path = cwd;
			}

			assertPath(path);

			// Skip empty entries
			if (path.length === 0) {
				continue;
			}

			resolvedPath = path + '/' + resolvedPath;
			resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;
		}

		// At this point the path should be resolved to a full absolute path, but
		// handle relative paths to be safe (might happen when process.cwd() fails)

		// Normalize the path
		resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);

		if (resolvedAbsolute) {
			if (resolvedPath.length > 0) return '/' + resolvedPath;else return '/';
		} else if (resolvedPath.length > 0) {
			return resolvedPath;
		} else {
			return '.';
		}
	}
function resolve() {
		var resolvedPath = '';
		var resolvedAbsolute = false;
		var cwd;

		for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
			var path;
			if (i >= 0) path = arguments[i];else {
				if (cwd === undefined) cwd = process.cwd();
				path = cwd;
			}

			assertPath(path);

			// Skip empty entries
			if (path.length === 0) {
				continue;
			}

			resolvedPath = path + '/' + resolvedPath;
			resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;
		}

		// At this point the path should be resolved to a full absolute path, but
		// handle relative paths to be safe (might happen when process.cwd() fails)

		// Normalize the path
		resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);

		if (resolvedAbsolute) {
			if (resolvedPath.length > 0) return '/' + resolvedPath;else return '/';
		} else if (resolvedPath.length > 0) {
			return resolvedPath;
		} else {
			return '.';
		}
	}
function resolve ( ) { var resolvedPath = '' ; var resolvedAbsolute = false ; var cwd ; for ( var i = arguments . length - 1 ; i >= - 1 && ! resolvedAbsolute ; i -- ) { var path ; if ( i >= 0 ) path = arguments [ i ] ; else { if ( cwd === undefined ) cwd = process . cwd ( ) ; path = cwd ; } assertPath ( path ) ; // Skip empty entries if ( path . length === 0 ) { continue ; } resolvedPath = path + '/' + resolvedPath ; resolvedAbsolute = path . charCodeAt ( 0 ) === 47 /*/*/ ; } // At this point the path should be resolved to a full absolute path, but // handle relative paths to be safe (might happen when process.cwd() fails) // Normalize the path resolvedPath = normalizeStringPosix ( resolvedPath , ! resolvedAbsolute ) ; if ( resolvedAbsolute ) { if ( resolvedPath . length > 0 ) return '/' + resolvedPath ; else return '/' ; } else if ( resolvedPath . length > 0 ) { return resolvedPath ; } else { return '.' ; } }
path.resolve([from ...], to)
path . resolve ( [ from ... ] to )