var pathPlatform = require('path-platform'); module.exports = function (cwd, opts) { if (cwd === undefined) cwd = process.cwd(); if (!opts) opts = {}; var platform = opts.platform || process.platform; var isWindows = /^win/.test(platform); var path = isWindows ? pathPlatform.win32 : pathPlatform; var normalize = !isWindows ? path.normalize : path.normalize('c:') === 'c:.' ? fixNormalize(path.normalize) : path.normalize; var sep = isWindows ? /[\\\/]/ : '/'; var init = isWindows ? '' : '/'; var join = function (x, y) { var ps = [ x, y ].filter(function (p) { return p && typeof p === 'string' }); return normalize(ps.join(isWindows ? '\\' : '/')); }; var res = normalize(cwd) .split(sep) .reduce(function (acc,dir,ix) { return acc.concat(join(acc[ix], dir)) }, [init]) .slice(1) .reverse() ; if (res[0] === res[1]) return [ res[0] ]; if (isWindows && /^\\/.test(cwd)) { return res.slice(0,-1).map(function (d) { var ch = d.charAt(0) return ch === '\\' ? d : ch === '.' ? '\\' + d.slice(1) : '\\' + d }); } return res; function fixNormalize(fn) { return function(p) { return fn(p).replace(/:\.$/, ':') } } }