thegeeklab/gulpfile.js

117 lines
5.9 KiB
JavaScript

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")
);