Search code examples
javascriptnode.jspathrelative-path

Converting an absolute path to a relative path


Working in Node I need to convert my request path into a relative path so I can drop it into some templates that have a different folder structure.

For example, if I start with the path "/foo/bar" and want the relative path to "/foo", it would be "..", and for "/foo/bar/baz" it would be "../..".

I wrote a pair of functions to do this:

function splitPath(path) {
    return path.split('/').map(dots).slice(2).join('/');
}

function dots() {
    return '..';
}

Not sure if this is the best approach or if it's possible to do it with a regular expression in String.replace somehow?

edit

I should point out this is so I can render everything as static HTML, zip up the whole project, and send it to someone who doesn't have access to a web server. See my first comment.


Solution

  • If I understand you question correct you can use path.relative(from, to)

    Documentation

    Example:

    var path = require('path');
    console.log(path.relative('/foo/bar/baz', '/foo'));