@wide/polyfiller
v2.1.1
Published
Polyfills loader on demand.
Downloads
476
Keywords
Readme
Polyfiller
Load polyfills on demand.
Install
npm install @wide/polyfiller --save
Usage
This exemple will load assets/polyfills/object-assign.js
on IE 11
only:
import polyfiller from '@wide/polyfiller'
polyfiller({
path: 'assets/polyfills/',
load: {
'object-assign.js': {
ie: '<=11'
}
}
})
path
public folder of compiled polyfillsload
collection of polyfills to load, accept a key/value combinationkey
: filename or url of the polyfillvalue
: criteria to satisfies (see bowser.satisfied)
Built-in polyfills
@wide/polyfiller
comes with a set of well-known polyfills:
babel.js
:core-js/stable
andregenerator-runtime/runtime
closest.js
:element-closest-polyfill
object-fit.js
:object-fit-images
andobject-fit-videos
picture-fill.js
:picturefill
object-assign.js
:es6-object-assign
fetch
:whatwg-fetch
svg.js
:svg4everybody
These polyfills can be loaded in two steps, first import the needed ones using the presets
collection:
import polyfiller from '@wide/polyfiller'
import presets from '@wide/polyfiller/lib/presets'
polyfiller({
path: 'assets/polyfills/',
load: {
...preset.babel,
...preset.fetch,
}
})
Then, you need to compile them into the assets/polyfills
:
// assets/polyfills/babel.js
import '@wide/polyfiller/lib/presets/babel'
// assets/polyfills/fetch.js
import '@wide/polyfiller/lib/presets/fetch'
Capabilities
To resolve which polyfill must be loaded, @wide/polyfiller
makes use of the bowser
lib and expose the main feature of the browser:
import capabilities from '@wide/polyfiller/lib/capabilities'
capabilities.touch // true | false
capabilities.platform // desktop | mobile
capabilities.os // linux | macos | windows
capabilities.engine // trident | gecko
capabilities.name // ie | chrome | firefox
capabilities.version // number
capabilities.chrome // true | false
capabilities.opera // true | false
capabilities.firefox // true | false
capabilities.safari // true | false
capabilities.edge // true | false
capabilities.ie // true | false
capabilities.webp // true | false
These capabilities can be exposed as window.capabilities
and body
css classes:
import { expose } from '@wide/polyfiller/lib/capabilities'
expose()
Libraries
This package uses :
Authors
- Aymeric Assier - github.com/myeti
- Julien Martins Da Costa - github.com/jdacosta
License
This project is licensed under the MIT License - see the licence file for details