readme.md
1 Overview 2 ======== 3 4 [](https://ci.testling.com/lydell/resolve-url) 5 6 Like Node.js’ [`path.resolve`]/[`url.resolve`] for the browser. 7 8 ```js 9 var resolveUrl = require("resolve-url") 10 11 window.location 12 // https://example.com/articles/resolving-urls/edit 13 14 resolveUrl("remove") 15 // https://example.com/articles/resolving-urls/remove 16 17 resolveUrl("/static/scripts/app.js") 18 // https://example.com/static/scripts/app.js 19 20 // Imagine /static/scripts/app.js contains `//# sourceMappingURL=../source-maps/app.js.map` 21 resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map") 22 // https://example.com/static/source-maps/app.js.map 23 24 resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map", "../coffee/app.coffee") 25 // https://example.com/static/coffee/app.coffee 26 27 resolveUrl("//cdn.example.com/jquery.js") 28 // https://cdn.example.com/jquery.js 29 30 resolveUrl("http://foo.org/") 31 // http://foo.org/ 32 ``` 33 34 35 Installation 36 ============ 37 38 - `npm install resolve-url` 39 - `bower install resolve-url` 40 - `component install lydell/resolve-url` 41 42 Works with CommonJS, AMD and browser globals, through UMD. 43 44 45 Usage 46 ===== 47 48 ### `resolveUrl(...urls)` ### 49 50 Pass one or more urls. Resolves the last one to an absolute url, using the 51 previous ones and `window.location`. 52 53 It’s like starting out on `window.location`, and then clicking links with the 54 urls as `href` attributes in order, from left to right. 55 56 Unlike Node.js’ [`path.resolve`], this function always goes through all of the 57 arguments, from left to right. `path.resolve` goes from right to left and only 58 in the worst case goes through them all. Should that matter. 59 60 Actually, the function is _really_ like clicking a lot of links in series: An 61 actual `<a>` gets its `href` attribute set for each url! This means that the 62 url resolution of the browser is used, which makes this module really 63 light-weight. 64 65 Also note that this functions deals with urls, not paths, so in that respect it 66 has more in common with Node.js’ [`url.resolve`]. But the arguments are more 67 like [`path.resolve`]. 68 69 [`path.resolve`]: http://nodejs.org/api/path.html#path_path_resolve_from_to 70 [`url.resolve`]: http://nodejs.org/api/url.html#url_url_resolve_from_to 71 72 73 Tests 74 ===== 75 76 Run `npm test`, which lints the code and then gives you a link to open in a 77 browser of choice (using `testling`). 78 79 80 License 81 ======= 82 83 [The X11 (“MIT”) License](LICENSE).