const gulp = require("gulp"); const realFavicon = require("gulp-real-favicon"); const fs = require("fs"); const del = require("del"); const through = require("through2"); var BUILD = "build"; var FAVICON_DATA_FILE = BUILD + "/faviconData.json"; function noop() { return through.obj(); } gulp.task("prepare", function (done) { if (!fs.existsSync(BUILD)) { fs.mkdirSync(BUILD, { recursive: true, }); } done(); }); gulp.task("favicon-generate", function (done) { realFavicon.generateFavicon( { masterPicture: "src/favicon/favicon-main.svg", dest: "static/favicon", iconsPath: "/favicon", design: { ios: { pictureAspect: "backgroundAndMargin", backgroundColor: "#4186c9", margin: "0", assets: { ios6AndPriorIcons: false, ios7AndLaterIcons: false, precomposedIcons: false, declareOnlyDefaultIcon: true, }, }, desktopBrowser: {}, windows: { masterPicture: { type: "inline", content: "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNTAwIgogICBoZWlnaHQ9IjUwMCIKICAgdmlld0JveD0iMCAwIDEzMi4yOTE2NyAxMzIuMjkxNjciCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzU1OSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4xIChjNjhlMjJjMzg3LCAyMDIxLTA1LTIzKSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iYXZhdGFyX3Jhdy5zdmciCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXc1NjEiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSIwLjY0NzY1MDExIgogICAgIGlua3NjYXBlOmN4PSIyODMuMzMyIgogICAgIGlua3NjYXBlOmN5PSI0NjkuMzg5MjUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIyNTYwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEzODAiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjMyIgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHVuaXRzPSJweCIgLz4KICA8ZGVmcwogICAgIGlkPSJkZWZzNTU2IiAvPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkViZW5lIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00OC40MTY4OTQsLTExMy40MzY4NikiPgogICAgPGcKICAgICAgIGlkPSJnMzItNiIKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmYiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjQxNDM5NzM4LDAsMCwwLjQyNDgzNDQ2LC00Ny45NzQ1NjYsLTE3Ny40MzUxNCkiIC8+CiAgICA8ZwogICAgICAgaWQ9ImczNi02IgogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZiIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNDE0Mzk3MzgsMCwwLDAuNDI0ODM0NDYsLTQ3Ljk3NDU2NiwtMTc3LjQzNTE0KSIgLz4KICAgIDxnCiAgICAgICBpZD0iZzUwMzQiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgyLjgyNTEzMTEsMCwwLDIuODI1MTMxMSwtMjA3LjYxNTQ5LC00NDQuOTI5MzkpIj4KICAgICAgPHBhdGgKICAgICAgICAgY2xhc3M9InN0MSIKICAgICAgICAgZD0ibSAxMTAuMDA0OTEsMjE1LjUxNDU5IC0xNC43MTUzNjgsLTUuOTkwMzQgYyAtMS45MTgwMjcsLTAuNzc5MDEgLTQuMDAzNzQ1LDAuNjY2MTkgLTQuMDAzNzQ1LDIuNzgyOTYgdiAxNy40OTI4NSBjIDAsMi4wNjg0MyAyLjAwMTg2OCwzLjUxODk5IDMuOTA0MTczLDIuODI1OTQgbCAxNC43MTUzNywtNS4zNjcxMyBjIDEuMTYzMzgsLTAuNDI0NDIgMS45NDQyMiwtMS41NTgwMiAxLjk0NDIyLC0yLjgyNTk0IHYgLTYuMTM1MzggYyAwLC0xLjIyNDk0IC0wLjcyODQ0LC0yLjMzMTY4IC0xLjg0NDY1LC0yLjc4Mjk2IHoiCiAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNTMwNjA5IiAvPgogICAgICA8cGF0aAogICAgICAgICBjbGFzcz0ic3QxIgogICAgICAgICBkPSJtIDEzMi43OTA2NCwyMDkuNTI0MjUgLTE0LjcxNTM1LDUuOTkwMzQgYyAtMS4xMTA5OSwwLjQ1MTI4IC0xLjg0NDY2LDEuNTU4MDIgLTEuODQ0NjYsMi43ODI5NiB2IDYuMTM1MzggYyAwLDEuMjY3OTIgMC43ODA4MywyLjM5NjE0IDEuOTQ0MjMsMi44MjU5NCBsIDE0LjcxNTM0LDUuMzY3MTMgYyAxLjkwMjMyLDAuNjkzMDUgMy45MDQxOSwtMC43NTIxNSAzLjkwNDE5LC0yLjgyNTk0IHYgLTE3LjQ5Mjg1IGMgLTAuMDA2LC0yLjExNjc3IC0yLjA4NTcyLC0zLjU2MTk3IC00LjAwMzc1LC0yLjc4Mjk2IHoiCiAgICAgICAgIGlkPSJwYXRoNDYiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNTMwNjA5IiAvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==", }, pictureAspect: "noChange", backgroundColor: "#4186c9", onConflict: "override", assets: { windows80Ie10Tile: false, windows10Ie11EdgeTiles: { small: true, medium: true, big: true, rectangle: true, }, }, }, androidChrome: { pictureAspect: "shadow", themeColor: "#2f333e", manifest: { display: "standalone", orientation: "notSet", onConflict: "override", declared: true, }, assets: { legacyIcon: false, lowResolutionIcons: false, }, }, safariPinnedTab: { pictureAspect: "blackAndWhite", threshold: 58.75, themeColor: "#4186c9", }, }, settings: { scalingAlgorithm: "Mitchell", errorOnImageTooSmall: false, readmeFile: false, htmlCodeFile: false, usePathAsIs: false, }, markupFile: FAVICON_DATA_FILE, }, function () { done(); } ); }); gulp.task("favicon-check-update", function (done) { var currentVersion = JSON.parse(fs.readFileSync(FAVICON_DATA_FILE)).version; realFavicon.checkForUpdates(currentVersion, function (err) { if (err) { throw err; } }); done(); }); gulp.task("clean", function () { return del([BUILD, "static/favicon/", "resources"]); }); /* Task series */ gulp.task( "favicon", gulp.series("clean", "prepare", "favicon-generate", "favicon-check-update") );