polyfiller
v0.0.32Polyfiller
A polyfill combinator
Getting Started
This package requires Node ~0.10.0
If you haven't used npm before, be sure to check out the Getting Started guide, as it explains how to install npm and use a package.json file. Once you're familiar with that process, you may install this package with this command:
npm install polyfiller --save-dev
Once the package has been installed, it may be used inside your files with this line of JavaScript:
var Polyfiller = require('polyfiller');
Usage Example
var fs = require('fs');
var polyfiller = new Polyfiller;
var list = polyfiller.find([ 'Promise', 'Fetch', 'URL' ]);
fs.writeFile('./polyfills.js', polyfiller.pack(list));
Catalog
A list of available features
Compatibility
Theoretically compatible with all contemporary browsers since IE9.
For IE8 only it's recommended to include ie8 script before your build
Methods
find
Type: Function (Array, [ Function (feature, name, features) ])
Returns: Array
Returns an unordered bundle of polyfills as an array of objects
var polyfiller = new Polyfiller;
var list = polyfiller.find([
'Promise'
],
function (feature, name) {
console.log(feature.source, feature.config, name);
});
list[0].source; // source code
list[0].config.name; // Promise
Also available the second format (it may be useful in the future versions):
var polyfiller = new Polyfiller;
var list = polyfiller.find([
{
name: 'Promise'
}
],
function (feature, name) {
console.log(name, feature.source, feature.config);
});
list
Type: Function ([extended=false])
Returns: Array
Returns a list of all available features as an array of strings.
var polyfiller = new Polyfiller;
polyfiller.list(); // ['Promise', 'Reflect', 'URL', ...]
extended option
var polyfiller = new Polyfiller;
var list = polyfiller.list(true);
list; // [{ config }, ...]
list[0].name; // Array.from
list[0].author; // Mathias Bynens
list[0].licenses[0].type; // MIT
...
For more information see the config format
pack
Type: Function (features)
Returns: String
Packs a list of polyfills into one string
var polyfiller = new Polyfiller;
var list = polyfiller.find([ 'Promise' ]),
code = polyfiller.pack(list);
Options
exclude
Type: Array
Default: []
Some polyfills have dependencies that you can exclude here
var polyfiller = new Polyfiller({
exclude: ['setImmediate']
});
verbose
Type: Boolean
Default: false
Verbose mode is an option that provides additional details as to what the package is doing.
var polyfiller = new Polyfiller({
verbose: true
});
wrapper
Type: Function
Default (find
): None
Default (pack
): see
A custom wrapper for your environment.
var polyfiller = new Polyfiller({
wrapper: function (source) {
return ';(function () {' + source + '}.call(self));'
}
});
Also this option is available like a method:
var polyfiller = new Polyfiller;
polyfiller.options.wrapper(function (source) {
return source;
});
modules
Do you want to use some specific npm
or bower
modules?
var path = require('path');
var polyfiller = new Polyfiller({
modules: [
path.join(__dirname, '../your_catalog/npm_modules'),
path.join(__dirname, '../your_catalog/bower_components')
]
});
NOTE: Please use only with the option catalog
.
catalog
Type: Array
Default: [trunk/catalog]
Have custom polyfills? Add paths to their location here.
var path = require('path');
var polyfiller = new Polyfiller({
catalog: [
path.resolve(__dirname, '../your/catalog')
]
});
If you want to use npm
or bower
packages in your catalog, please see modules
section.
Required file structure for each new package:
catalog
Promise
index.json
index.js
index.json
{
"name": "Promise"
}
There are dependencies?
"dependencies": ["window.setImmediate"]
index.js
module.exports = [
{
type: 'npm',
name: 'es6-promises'
}
];
type
Type: string [npm | bower | file]
Default: None
name
Type: string
Default: None
The files are located locally?
catalog
Promise
files
index.js — your polyfill
index.json
index.js
// index.js
var path = require('path');
module.exports = [
{
type: 'file',
name: path.join(__dirname, './files/index.js')
}
];
Tests
npm test
Contributing
Please see our contributing guide
Have an interesting and well-tested polyfill?
License
MIT
Task submitted by Alexander Abashkin