84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | Overview | |||
|  | ======== | |||
|  | 
 | |||
|  | [](https://ci.testling.com/lydell/resolve-url) | |||
|  | 
 | |||
|  | Like Node.js’ [`path.resolve`]/[`url.resolve`] for the browser. | |||
|  | 
 | |||
|  | ```js | |||
|  | var resolveUrl = require("resolve-url") | |||
|  | 
 | |||
|  | window.location | |||
|  | // https://example.com/articles/resolving-urls/edit | |||
|  | 
 | |||
|  | resolveUrl("remove") | |||
|  | // https://example.com/articles/resolving-urls/remove | |||
|  | 
 | |||
|  | resolveUrl("/static/scripts/app.js") | |||
|  | // https://example.com/static/scripts/app.js | |||
|  | 
 | |||
|  | // Imagine /static/scripts/app.js contains `//# sourceMappingURL=../source-maps/app.js.map` | |||
|  | resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map") | |||
|  | // https://example.com/static/source-maps/app.js.map | |||
|  | 
 | |||
|  | resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map", "../coffee/app.coffee") | |||
|  | // https://example.com/static/coffee/app.coffee | |||
|  | 
 | |||
|  | resolveUrl("//cdn.example.com/jquery.js") | |||
|  | // https://cdn.example.com/jquery.js | |||
|  | 
 | |||
|  | resolveUrl("http://foo.org/") | |||
|  | // http://foo.org/ | |||
|  | ``` | |||
|  | 
 | |||
|  | 
 | |||
|  | Installation | |||
|  | ============ | |||
|  | 
 | |||
|  | - `npm install resolve-url` | |||
|  | - `bower install resolve-url` | |||
|  | - `component install lydell/resolve-url` | |||
|  | 
 | |||
|  | Works with CommonJS, AMD and browser globals, through UMD. | |||
|  | 
 | |||
|  | 
 | |||
|  | Usage | |||
|  | ===== | |||
|  | 
 | |||
|  | ### `resolveUrl(...urls)` ###
 | |||
|  | 
 | |||
|  | Pass one or more urls. Resolves the last one to an absolute url, using the | |||
|  | previous ones and `window.location`. | |||
|  | 
 | |||
|  | It’s like starting out on `window.location`, and then clicking links with the | |||
|  | urls as `href` attributes in order, from left to right. | |||
|  | 
 | |||
|  | Unlike Node.js’ [`path.resolve`], this function always goes through all of the | |||
|  | arguments, from left to right. `path.resolve` goes from right to left and only | |||
|  | in the worst case goes through them all. Should that matter. | |||
|  | 
 | |||
|  | Actually, the function is _really_ like clicking a lot of links in series: An | |||
|  | actual `<a>` gets its `href` attribute set for each url! This means that the | |||
|  | url resolution of the browser is used, which makes this module really | |||
|  | light-weight. | |||
|  | 
 | |||
|  | Also note that this functions deals with urls, not paths, so in that respect it | |||
|  | has more in common with Node.js’ [`url.resolve`]. But the arguments are more | |||
|  | like [`path.resolve`]. | |||
|  | 
 | |||
|  | [`path.resolve`]: http://nodejs.org/api/path.html#path_path_resolve_from_to | |||
|  | [`url.resolve`]: http://nodejs.org/api/url.html#url_url_resolve_from_to | |||
|  | 
 | |||
|  | 
 | |||
|  | Tests | |||
|  | ===== | |||
|  | 
 | |||
|  | Run `npm test`, which lints the code and then gives you a link to open in a | |||
|  | browser of choice (using `testling`). | |||
|  | 
 | |||
|  | 
 | |||
|  | License | |||
|  | ======= | |||
|  | 
 | |||
|  | [The X11 (“MIT”) License](LICENSE). |