(function() { "use strict"; var gulp = require("gulp"), replace = require('gulp-replace'), sass = require('gulp-sass')(require('node-sass')), uglify = require("gulp-uglify"), eslint = require("gulp-eslint"); var sources = { js: [ "web-src/smarthome.js", "web-src/static.js", "web-src/settings.js" ], sass: "web-src/smarthome.scss", snippets: { all: "snippets-src/**", versioned: [ "snippets-src/main.html", "snippets-src/main_static.html" ] } }; var paths = { FontLibs: [ './node_modules/material-icons/iconfont/material-icons.woff*', './node_modules/framework7-icons/fonts/Framework7Icons-Regular.woff*', './node_modules/framework7-icons/fonts/Framework7Icons-Regular.ttf' ] }; gulp.task("copyFontLibs", function () { return gulp.src(paths.FontLibs, { encoding: false }) .pipe(gulp.dest('./src/main/resources/web/fonts')); }); gulp.task("css", function() { return gulp.src(sources.sass) .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError)) .pipe(gulp.dest("./src/main/resources/web")); }); gulp.task("eslint", function() { return gulp.src(sources.js) .pipe(eslint({ configFile: "eslint.json" })) .pipe(eslint.format()) .pipe(eslint.failAfterError()); }); gulp.task("js", function() { return gulp.src(sources.js) .pipe(uglify()) .pipe(gulp.dest("./src/main/resources/web")); }); gulp.task("snippetsAll", function() { return gulp.src(sources.snippets.all) .pipe(gulp.dest("./src/main/resources/snippets")) }); gulp.task("snippetsVersioned", function() { // Convert ISO String "2011-10-05T14:48:00.000Z" -> "YYYYMMDDHHmm" var buildVersion = new Date().toISOString().slice(0, 16).replaceAll(/[T:-]/g, ""); return gulp.src(sources.snippets.versioned) .pipe(replace("%version%", buildVersion)) .pipe(gulp.dest("./src/main/resources/snippets")) }); gulp.task("default", gulp.parallel("css", "copyFontLibs", gulp.series("eslint", "js"), gulp.series("snippetsAll", "snippetsVersioned"))); })();