Autopolyfiller - Precise polyfills. Automatic and minimal polyfills for your code.
It accepts multiply js files and returns a file with all required polyfills. Please note: all input files will be dropped from the output stream of autopolyfiller. To concat polyfills with all your js files please refer to examples.
First, install gulp-autopolyfiller
as a development dependency:
npm install --save-dev gulp-autopolyfiller
Then, add it to your gulpfile.js
:
var autopolyfiller = require('gulp-autopolyfiller');
gulp.task('autopolyfiller', function () {
return gulp.src('./lib/**/*.js')
.pipe(autopolyfiller('result_polyfill_file.js'))
.pipe(gulp.dest('./dist'));
});
Type: Array
Default value: []
- all browsers
Type: Array
Default value: []
- list of extra polyfills to add
Type: Array
Default value: []
- list of polyfills to remove
List of target browsers. Autopolyfiller uses Autoprefixer-style browsers format. See Browsers format for details.
Steps:
- Concat all scripts
- Generate polyfills
- Append polyfills
- Uglify
var gulp = require('gulp');
var concat = require('gulp-concat');
var order = require('gulp-order');
var uglify = require('gulp-uglify');
var autopolyfiller = require('gulp-autopolyfiller');
var merge = require('event-stream').merge;
gulp.task('default', function () {
// Concat all required js files
var all = gulp.src('js/*.js')
.pipe(concat('all.js'));
// Generate polyfills for all files
var polyfills = all
.pipe(autopolyfiller('polyfills.js'));
// Merge polyfills and all files streams
return merge(polyfills, all)
// Order files. NB! polyfills MUST be first
.pipe(order([
'polyfills.js',
'all.js'
]))
// Make single file
.pipe(concat('all.min.js'))
// Uglify it
.pipe(uglify())
// And finally write `all.min.js` into `build/` dir
.pipe(gulp.dest('build'));
});
You can specify list of target browsers to reduce amount of polyfills.
var autopolyfiller = require('gulp-autopolyfiller');
gulp.src('./your/js/**/*.js')
.pipe(autopolyfiller('result_polyfill_file.js', {
browsers: ['last 2 version', 'ie 8', 'ie 9']
}))
.pipe(gulp.dest('./dist'));
var autopolyfiller = require('gulp-autopolyfiller');
gulp.src('./your/js/**/*.js')
.pipe(autopolyfiller('result_polyfill_file.js', {
browsers: require('autoprefixer').default
}))
.pipe(gulp.dest('./dist'));
var autopolyfiller = require('gulp-autopolyfiller');
gulp.src('./your/js/**/*.js')
.pipe(autopolyfiller('polyfills_without_promises.js', {
exclude: ['Promise']
}))
.pipe(gulp.dest('./dist'));