polyfillr
is a minimalist function to dynamically load polyfills before start your application. The function is inspired by Anuj Nair about the conditionally load of multiple Polyfills using Webpack
The plugin is available as the polyfillr
package name on npm and Github.
npm i --save-dev polyfillr
yarn add --dev polyfillr
polyfillr
was built for Node.js >=8.11.2
.
Webpack need __webpack_public_path__
variable to find the path to dynamically load files. More information in the Webpack documentation.
The following example load Array.from
polyfill from core-js
node modules with dynamic import.
const polyfillr = require('polyfillr');
polyfillr({
polyfills: [
{
name: 'Array.from',
test: typeof Array.from !== 'function',
load: () => {
return import('core-js/es/array/from')
}
}
]
});
The following example load Array.from
polyfill from core-js
node modules with dynamic import and executed the callback function.
const polyfillr = require('polyfillr');
polyfillr({
polyfills: [
{
name: 'Array.from',
test: typeof Array.from !== 'function',
load: () => {
return import('core-js/es/array/from');
}
}
],
callback: () => {
console.log('Polyfill loaded');
}
});
The following example load Array.from
polyfill from core-js
node modules with dynamic import and add Webpack chunk name polyfill.array-from
for the loaded polyfill file.
More information about Webpack magic comments.
const polyfillr = require('polyfillr');
polyfillr({
polyfills: [
{
name: 'Array.from',
test: typeof Array.from !== 'function',
load: () => {
return import(/* webpackChunkName: "polyfill.array-from" */ 'core-js/es/array/from');
}
}
]
});
The following example load HTMLPictureElement
polyfill from ./polyfills
project directory with dynamic import.
const polyfillr = require('polyfillr');
polyfillr({
polyfills: [
{
name: 'HTMLPictureElement',
test: typeof window.HTMLPictureElement !== 'function',
load: () => {
return import('./polyfills/picturefill.min.js');
}
}
]
});
The following example load HTMLPictureElement
polyfill from ./polyfills
project directory and Array.from
polyfill from core-js
node modules with dynamic import.
const polyfillr = require('polyfillr');
polyfillr({
polyfills: [
{
name: 'HTMLPictureElement',
test: typeof window.HTMLPictureElement !== 'function',
load: () => {
return import('./polyfills/picturefill.min.js');
}
},
{
name: 'Array.from',
test: typeof Array.from !== 'function',
load: () => {
return import('core-js/es/array/from');
}
}
]
});
The following example load Array.from
polyfill from core-js
node modules with dynamic import and enables debug log in the browser devtools.
const polyfillr = require('polyfillr');
polyfillr({
polyfills: [
{
name: 'Array.from',
test: typeof Array.from !== 'function',
load: () => {
return import('core-js/es/array/from');
}
}
],
debug: true
});
Array
Tells to the function the list of polyfills to load. The polyfills
array accept configurations of polyfills with an object with three parameters:
String
The name of the polyfill.
Boolean
The test to see if we need to download the polyfill to the browser.
Function
The function to executes to dynamically import the polyfill file.
Function = () => {}
Tells the optional function to execute when all polyfills are loaded.
Boolean = false
Tells to the function to enable the debug mode. Log messages will be displayed in the browser devtools for every polyfill files load.
polyfillr
is licensed under the MIT License.
Created with ♥ by @yoriiis.