https://github.com/apipost-team/url-join2
https://github.com/apipost-team/url-join2
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/apipost-team/url-join2
- Owner: Apipost-Team
- License: mit
- Created: 2024-04-17T06:20:47.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-17T14:47:11.000Z (about 1 year ago)
- Last Synced: 2025-02-01T19:40:39.714Z (4 months ago)
- Language: JavaScript
- Size: 4.88 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Join all arguments together and normalize the resulting URL.
## Install
```bash
npm install url-join2
```## Usage
```javascript
import urlJoin from 'url-join2';const fullUrl = urlJoin('http://www.google.com', 'a', '/b/cd', '?foo=123', '&bar=456', '#heading-1');
console.log(fullUrl.toString()); // 'http://www.google.com/a/b/cd?foo=123&bar=456#heading-1'
```## You might not need this library
This library was originally created before the [URL API](https://developer.mozilla.org/en-US/docs/Web/API/URL_API) was standardized and widely available in popular runtimes such as browsers and Node.js. Depending on your use-case you might want to consider using the standardized API over this library.
### In the Browser
For example, the equivalent code for the above example would look as follows when using the URL API:
```javascript
const fullUrl = new URL('http://www.google.com');fullUrl.pathname = '/a/b/cd';
fullUrl.searchParams.append('foo', '123');
fullUrl.searchParams.append('bar', '456');
fullUrl.hash = 'heading-1';console.log(fullUrl.toString()); // 'http://www.google.com/a/b/cd?foo=123&bar=456#heading-1'
```### Joining paths
This library provides the missing piece for the URL API, joining multiple paths together:
```javascript
import urlJoin from 'url-join2';const fullUrl = new URL('http://www.google.com');
fullUrl.pathname = urlJoin('a', '/b/cd');
console.log(fullUrl.toString()); // 'http://www.google.com/a/b/cd'
```### In Node.js
If you are using Node.js, the `path/posix` module can join paths in a way that is compatible with URL pathnames:
```javascript
import { join as joinPath } from 'node:path/posix';const fullUrl = new URL('http://www.google.com');
fullUrl.pathname = joinPath('a', '/b/cd');
console.log(fullUrl.toString()); // 'http://www.google.com/a/b/cd'
```### Caveats of URL API
There are a couple of caveats to take into account when utilizing the standard APIs. Firstly, a `URL` must always include a complete and valid base, which means specifying the scheme and domain name (e.g. http://example.com).
Secondly, it is not possible to join together and normalize the path of a URL. You must do this manually by joining your paths and then assigning the pathname property.
## License
MIT