44 lines
664 B
JavaScript
44 lines
664 B
JavaScript
/**
|
|
* Modules
|
|
*/
|
|
|
|
var path = require('path')
|
|
|
|
/**
|
|
* Vars
|
|
*/
|
|
|
|
var relative = path.relative
|
|
var lastCwd = process.cwd()
|
|
var cache = Object.create(null)
|
|
|
|
/**
|
|
* Expose cachedPathRelative
|
|
*/
|
|
|
|
module.exports = cachedPathRelative
|
|
|
|
/**
|
|
* cachedPathRelative
|
|
*/
|
|
|
|
function cachedPathRelative (from, to) {
|
|
// If the current working directory changes, we need
|
|
// to invalidate the cache
|
|
var cwd = process.cwd()
|
|
if (cwd !== lastCwd) {
|
|
cache = {}
|
|
lastCwd = cwd
|
|
}
|
|
|
|
if (cache[from] && cache[from][to]) return cache[from][to]
|
|
|
|
var result = relative.call(path, from, to)
|
|
|
|
cache[from] = cache[from] || {}
|
|
cache[from][to] = result
|
|
|
|
return result
|
|
|
|
}
|