JSPM

relativize-url

0.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 502
  • Score
    100M100P100Q99196F
  • License ISC

Construct relative URL from source and target URL

Package Exports

  • relativize-url
  • relativize-url/relativize-url.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (relativize-url) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

relativize-url

Simple (only depends on URL) module to construct relative URLs from target and base URLs.

This is similar to relateurl but has no dependency on url (note lower-case). The dependency on url caused trouble in recent webpack and react so I put together this minimal library function to leverage URL's parsing skillz.

relativize-url is tiny so feel free to pigeon the code directly from relativize-url.js.

Installation

Like everything else:

npm install -S relativize-url

Sample use

const getRel = require('relativize-url').relativize;
const base = 'http://a.example/b/e/f';
const target = 'http://a.example/b/c/d';
console.log(getRel(target, base));
// got '../c/d'; let's check it:
console.log(new URL('../c/d', base).href === target);
// true

The __tests__/manifest.js file has a list of tests that demo this pretty well.

relateurl Interface

For folks migrating from relateurl because of the dependency on url, you can use the same interface in relativize-url:

const RelativizeUrl = require('relativize-url');
const base = 'http://a.example/b/e/f';
const relater = new RelativizeUrl(base);
const target = 'http://a.example/b/c/d';
console.log(relater.relate(target));
// got '../c/d'; let's check it:
console.log(new URL('../c/d', base).href === target);
// true

version

This is at 0.0.2 (SemVer prohibits negative and imaginary numbers). If I get some feedback on interface and bug fixes, I'll do a propery 1.0 release.