native-url
Advanced tools
Comparing version 0.2.0 to 0.2.1
{ | ||
"name": "native-url", | ||
"version": "0.2.0", | ||
"version": "0.2.1", | ||
"description": "Brings the node url api layer to whatwg-url class", | ||
@@ -8,2 +8,3 @@ "source": "src/index.js", | ||
"module": "dist/index.mjs", | ||
"typings": "index.d.ts", | ||
"scripts": { | ||
@@ -21,2 +22,5 @@ "build": "microbundle", | ||
}, | ||
"peerDependencies": { | ||
"@types/node": ">=8.0.0" | ||
}, | ||
"repository": { | ||
@@ -46,5 +50,7 @@ "type": "git", | ||
"jest": "^24.9.0", | ||
"karmatic": "^1.4.0", | ||
"lint-staged": "^9.2.5", | ||
"microbundle": "^0.11.0", | ||
"prettier": "^1.18.2" | ||
"prettier": "^1.18.2", | ||
"webpack": "^4.41.2" | ||
}, | ||
@@ -51,0 +57,0 @@ "lint-staged": { |
# native-url | ||
A lightweight implementation of Node's [url](http://nodejs.org/api/url.html) interface atop the [URL API](https://developer.mozilla.org/en-US/docs/Web/API/URL). | ||
A lightweight implementation of Node's [url](http://nodejs.org/api/url.html) interface atop the [URL API](https://developer.mozilla.org/en-US/docs/Web/API/URL). Use it instead of the `url` module to reduce your bundle size by around 7.5 kB. | ||
**~1.6 KB Gzipped**, works in both Node.js and [modern browsers](https://caniuse.com/#feat=mdn-api_url). | ||
Weighs **1.6 kB gzipped**, works in Node.js 7+ and [all modern browsers](https://caniuse.com/#feat=mdn-api_url): | ||
![Chrome 32, Firefox 19, Safari 7, Edge 12, Opera 19](https://badges.herokuapp.com/browsers?googlechrome=32&firefox=19&safari=7µsoftedge=12&opera=19) | ||
Older browsers can be [easily polyfilled](#polyfill-for-older-browsers) without new browsers loading the code. | ||
## Installation | ||
@@ -15,3 +19,3 @@ | ||
``` | ||
```js | ||
const url = require('native-url'); | ||
@@ -23,2 +27,44 @@ | ||
### Usage with Webpack | ||
When you use the `url` module, webpack bundles [`node-url`](https://github.com/defunctzombie/node-url) for the browser. You can alias webpack to use `native-url` instead, saving around 7.5kB: | ||
```js | ||
// webpack.config.js | ||
module.exports = { | ||
// ... | ||
resolve: { | ||
alias: { | ||
url: 'native-url' | ||
} | ||
} | ||
} | ||
``` | ||
The result is **functionally equivalent** in Node 7+ and all modern browsers. | ||
### Usage with Rollup | ||
Rollup does not bundle shims for Node.js modules like `url` by default, but we can add `url` support via `native-url` using aliases: | ||
```js | ||
// rollup.config.js | ||
import resolve from 'rollup-plugin-node-resolve'; | ||
import alias from '@rollup/plugin-alias'; | ||
module.exports = { | ||
// ... | ||
plugins: [ | ||
resolve(), | ||
alias({ | ||
entries: { | ||
url: 'native-url' | ||
} | ||
}) | ||
] | ||
}; | ||
``` | ||
With this in place, `import url from 'url'` will use `native-url` and keep your bundle small. | ||
## API | ||
@@ -68,1 +114,11 @@ | ||
``` | ||
## Polyfill for Older Browsers | ||
`native-url` relies on the DOM [URL API](https://developer.mozilla.org/en-US/docs/Web/API/URL) to work. For older browsers that don't support the `URL` API, a [polyfill](https://www.npmjs.com/package/url-polyfill) is available. | ||
Conveniently, a polyfill is never needed for [browsers that support ES Modules](https://caniuse.com/#feat=es6-module), so we can use `<script nomodule>` to conditionally load it for older browsers: | ||
```html | ||
<script nomodule src="/path/to/url-polyfill.js"></script> | ||
``` |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
142339
21
122
2
7