| 1 |
/* eslint-env es6 */ |
| 2 |
/* eslint-disable */ |
| 3 |
|
| 4 |
const { src, series, parallel, dest, watch } = require('gulp'); |
| 5 |
const babel = require('gulp-babel'); // es6 -> es5 |
| 6 |
const uglify = require('gulp-uglify'); // js minify |
| 7 |
const concat = require('gulp-concat'); // concat to single file |
| 8 |
const rename = require("gulp-rename"); // rename files |
| 9 |
const autoprefixer = require( 'gulp-autoprefixer' ); // css prefixing |
| 10 |
const cleanCSS = require('gulp-clean-css'); // minify css |
| 11 |
const wpPot = require('gulp-wp-pot'); // for generating the .pot file. |
| 12 |
const sort = require('gulp-sort'); // recommended to prevent unnecessary changes in pot-file. |
| 13 |
const zip = require('gulp-zip'); // zip project |
| 14 |
|
| 15 |
// project |
| 16 |
const projectZipFile = 'fv-player.zip'; |
| 17 |
|
| 18 |
// translation |
| 19 |
const team = 'foliovision' |
| 20 |
const textDomain = 'fv-player'; |
| 21 |
const package = 'fv-wordpress-flowplayer'; |
| 22 |
const translationFile = 'fv-player.pot'; |
| 23 |
const bugReport = 'https://foliovision.com/support'; |
| 24 |
|
| 25 |
// files to check |
| 26 |
// const cssFrotend = ['./css/flowplayer.css', './css/fancybox.css', './css/lightbox.css', './css/colorbox.css']; |
| 27 |
// const cssAdmin = ['./css/admin.css', './css/s3-browser.css', './css/s3-uploader.css']; |
| 28 |
const freedomPlayerCSS = ['./css/skin.css', './css/fv-player-additions.css']; |
| 29 |
const modulesJs = ['./freedom-video-player/modules/fv-player.js', './freedom-video-player/modules/*.module.js']; |
| 30 |
const youtubeJS = './freedom-video-player/fv-player-youtube.dev.js'; |
| 31 |
const dashJS = './freedom-video-player/fv-player-dashjs.dev.js'; |
| 32 |
const loaderJS = './freedom-video-player/fv-player-loader.dev.js' |
| 33 |
const projectPHPWatchFiles = ['*.php', './controller/**/*.php', './models/**/*.php', './view/**/*.php']; |
| 34 |
|
| 35 |
// concat js files + uglify |
| 36 |
function jsModulesMinify() { |
| 37 |
return src(modulesJs) |
| 38 |
.pipe(babel({"presets": [ |
| 39 |
["@babel/preset-env", {"modules": false} ] |
| 40 |
]})) |
| 41 |
.pipe(concat('fv-player.min.js')) |
| 42 |
.pipe(uglify({ compress: { loops: false }, mangle: true}).on('error', console.error)) |
| 43 |
.pipe(dest('./freedom-video-player/') |
| 44 |
); |
| 45 |
} |
| 46 |
|
| 47 |
function jsFilessMinify() { |
| 48 |
return src([dashJS, youtubeJS, loaderJS]) |
| 49 |
.pipe(babel({"presets": [ |
| 50 |
["@babel/preset-env", {"modules": false} ] |
| 51 |
]})) |
| 52 |
.pipe(uglify({ compress: { loops: false }, mangle: true}).on('error', console.error)) |
| 53 |
.pipe(rename(function (path) { |
| 54 |
path.basename = path.basename.replace(/\.dev/, ''); |
| 55 |
path.extname = ".min.js"; |
| 56 |
})) |
| 57 |
.pipe(dest('./freedom-video-player/') |
| 58 |
); |
| 59 |
} |
| 60 |
|
| 61 |
function cssFreedomPlayer() { |
| 62 |
return src(freedomPlayerCSS) |
| 63 |
.pipe(concat('fv-player.min.css')) |
| 64 |
.pipe(autoprefixer()) |
| 65 |
.pipe(cleanCSS()) |
| 66 |
.pipe(dest('./css/')); |
| 67 |
} |
| 68 |
|
| 69 |
// generate .pot file |
| 70 |
function potFileGenerate() { |
| 71 |
return src(projectPHPWatchFiles) |
| 72 |
.pipe(sort()) |
| 73 |
.pipe(wpPot( { |
| 74 |
domain: textDomain, |
| 75 |
package: package, |
| 76 |
bugReport: bugReport, |
| 77 |
lastTranslator: "", |
| 78 |
team: team, |
| 79 |
headers: false |
| 80 |
} )) |
| 81 |
.pipe(dest('./languages/' + translationFile )) |
| 82 |
} |
| 83 |
|
| 84 |
// compresss plugin into zip file , exclude using ! |
| 85 |
function zipProject() { |
| 86 |
return src([ |
| 87 |
"**/*", |
| 88 |
"!node_modules{,/**}", |
| 89 |
// "!vendor{,/**}", // keep vendor |
| 90 |
"!test{,**}", |
| 91 |
"!.*", |
| 92 |
"!gulpfile.js", |
| 93 |
"!package.json", |
| 94 |
"!package-lock.json", |
| 95 |
"!composer.json", |
| 96 |
"!composer.lock" |
| 97 |
]) |
| 98 |
.pipe(zip(projectZipFile)) |
| 99 |
.pipe(dest('./dist')); |
| 100 |
}; |
| 101 |
|
| 102 |
// export tasks |
| 103 |
exports.zip = zipProject; |
| 104 |
exports.pot = potFileGenerate; |
| 105 |
exports.css = cssFreedomPlayer; |
| 106 |
exports.jsmodules = jsModulesMinify; |
| 107 |
exports.jsfiles = jsFilessMinify; |
| 108 |
exports.js = parallel( jsModulesMinify, jsFilessMinify ); |
| 109 |
|
| 110 |
exports.default = parallel(jsModulesMinify, jsFilessMinify, cssFreedomPlayer, potFileGenerate); |
| 111 |
|