A universal URL parser for Node.js and browser environments with a minimal footprint (gzipped only 600 bytes for the browser version).
Install with npm
:
npm install --save universal-parse-url
Note: The installed node module also includes a d.ts
file, and thus works out of the box with TypeScript.
import { parseURL } from 'universal-parse-url';
const url = parseURL('http://www.example.com:1234/foo?bar=1#baz');
The resulting url
object looks like this:
{
hash: '#baz',
host: 'www.example.com:1234',
hostname: 'www.example.com',
href: 'http://www.example.com:1234/foo?bar=1#baz',
pathname: '/foo',
port: '1234',
protocol: 'http:',
search: '?bar=1'
}
- In Node.js
parseURL
just delegates to URL.parse. - In browser environments:
- An HTMLAnchorElement is created initially (with
document.createElement('a')
). - When
parseURL
is called, thehref
attribute of this element is set to the given url string. - The element is then used to extract the URL details.
- An HTMLAnchorElement is created initially (with
If you plan on targeting browser environments as well, you need to use a bundler like Webpack, Browserify or Rollup (with rollup-plugin-node-resolve) that makes use of the browser
field in the package.json
.
To keep universal-parse-url
as small and simple as possible, only the URL details that are available in Node’s URL
object as well as HTMLAnchorElement
are supported (see the above example).