Files
contao-leaflet-libraries/gulpfile.js
2018-08-23 15:33:13 +02:00

110 lines
2.4 KiB
JavaScript

const { series, parallel, src, dest } = require('gulp');
var del = require('del');
var rename = require('gulp-rename');
var uglify = require('gulp-uglify');
var merge = require('merge-stream');
var minifyCss = require('gulp-minify-css');
var replace = require('gulp-replace');
var paths = [
{
dest: 'assets/control-geocoder',
js: 'Control.Geocoder.js',
css: 'Control.Geocoder.css'
},
{
dest: 'assets/leaflet-loading',
js: 'Control.Loading.js',
css: 'Control.Loading.css'
},
{
dest: 'assets/leaflet-providers',
js: 'leaflet-providers.js'
},
{
dest: 'assets/leaflet',
css: 'leaflet.css'
},
{
dest: 'assets/leaflet-fullscreen',
css: 'Control.FullScreen.css',
js: 'Control.FullScreen.js'
}
];
function clearStyles (cb) {
var i, clear = [];
for (i = 0; i < paths.length; i++) {
if (paths[i].css) {
clear.push(paths[i].dest + '/*.min.css');
}
}
del(clear);
cb();
}
function clearScripts (cb) {
var i, clear = [];
for (i = 0; i < paths.length; i++) {
if (paths[i].js) {
clear.push(paths[i].dest + '/*.min.js');
}
}
del(clear);
cb();
}
const scripts = series(clearScripts, function (cb) {
var i, stream, streams = [];
for (i = 0; i < paths.length; i++) {
if (paths[i].js) {
stream = src(paths[i].dest + '/' + paths[i].js)
.pipe(rename(function (path) {
path.basename += '.min';
}))
.pipe(uglify())
.pipe(dest(paths[i].dest));
streams.push(stream);
}
}
merge.call(null, streams);
cb();
});
const styles = series(clearStyles, function (cb) {
var i, stream, streams = [];
for (i = 0; i < paths.length; i++) {
if (paths[i].css) {
stream = src(paths[i].dest + '/' + paths[i].css)
.pipe(rename(function (path) {
path.basename += '.min';
}))
.pipe(minifyCss())
.pipe(replace(/url\(([^"][^\)]+)\)/g, 'url(\'$1\')'))
.pipe(dest(paths[i].dest));
streams.push(stream);
}
}
merge.call(null, streams);
cb();
})
exports.scripts = scripts;
exports.styles = styles;
exports.default = parallel(scripts, styles);