1
0
mirror of https://github.com/konpa/devicon.git synced 2025-08-06 14:46:46 +02:00

Gulpfile Edits (#759)

* Fixed main var/constants

Formatting as well

* Made gulp a constant

* Removed extra comma

Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>

* Removed extra () the things i cant spell

Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>

* Removed extra () the things i cant spell

Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>

* Removed extra () the things i cant spell

Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>

* Removed extra comma

Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>

* Apply all suggestions from Thomas-Boi

Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>

Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
This commit is contained in:
The Blob SCP
2021-07-18 01:39:20 -04:00
committed by GitHub
parent 3138687f0f
commit f37cec1bb8

View File

@@ -1,9 +1,9 @@
var gulp = require('gulp'); const gulp = require("gulp");
const svgmin = require("gulp-svgmin") const svgmin = require("gulp-svgmin");
const sass = require('gulp-sass'); const sass = require("gulp-sass");
sass.compiler = require('sass') sass.compiler = require("sass");
const yargs = require("yargs") const yargs = require("yargs");
const fsPromise = require('fs').promises; const fsPromise = require("fs").promises;
const path = require("path"); const path = require("path");
// global const // global const
@@ -19,17 +19,18 @@ const finalMinSCSSName = "devicon.min.scss";
* css files and compiling them together using Sass. * css files and compiling them together using Sass.
*/ */
async function createDeviconMinCSS() { async function createDeviconMinCSS() {
await createCSSFiles(); await createCSSFiles();
let deviconMinPath = path.join(__dirname, finalMinSCSSName); let deviconMinPath = path.join(__dirname, finalMinSCSSName);
// recall that devicon-alias.scss imported the devicon.css => don't need // recall that devicon-alias.scss imported the devicon.css => don't need
// to reimport that file. // to reimport that file.
const fileContent = `@use "${aliasSCSSName}";@use "${colorsCSSName}";`; const fileContent = `@use "${aliasSCSSName}";@use "${colorsCSSName}";`;
await fsPromise.writeFile(deviconMinPath, fileContent, "utf8"); await fsPromise.writeFile(deviconMinPath, fileContent, "utf8");
return gulp.src(finalMinSCSSName) return gulp
.pipe(sass.sync({"outputStyle": "compressed"}).on('error', sass.logError)) .src(finalMinSCSSName)
.pipe(gulp.dest('./')); .pipe(sass.sync({ outputStyle: "compressed" }).on("error", sass.logError))
.pipe(gulp.dest("./"));
} }
/** /**
@@ -37,16 +38,14 @@ async function createDeviconMinCSS() {
* devicon-colors.css from the devicon.json. * devicon-colors.css from the devicon.json.
*/ */
async function createCSSFiles() { async function createCSSFiles() {
const deviconJson = JSON.parse( const deviconJson = JSON.parse(
await fsPromise.readFile( await fsPromise.readFile(path.join(__dirname, deviconJSONName), "utf8")
path.join(__dirname, deviconJSONName), "utf8" );
)
);
await Promise.all([ await Promise.all([
createAliasSCSS(deviconJson), createAliasSCSS(deviconJson),
createColorsCSS(deviconJson) createColorsCSS(deviconJson)
]) ]);
} }
/** /**
@@ -60,13 +59,12 @@ async function createCSSFiles() {
* created. * created.
*/ */
function createAliasSCSS(deviconJson) { function createAliasSCSS(deviconJson) {
let statements = deviconJson.map(createAliasStatement).join(" "); let statements = deviconJson.map(createAliasStatement).join(" ");
let sass = `@use "devicon";${statements}`; let sass = `@use "devicon";${statements}`;
let sassPath = path.join(__dirname, aliasSCSSName); let sassPath = path.join(__dirname, aliasSCSSName);
return fsPromise.writeFile(sassPath, sass, "utf8"); return fsPromise.writeFile(sassPath, sass, "utf8");
} }
/** /**
* Create the aliases statement by searching for the * Create the aliases statement by searching for the
* techname in the statement and finding its aliases in * techname in the statement and finding its aliases in
@@ -76,16 +74,15 @@ function createAliasSCSS(deviconJson) {
* devicon-alias.scss. * devicon-alias.scss.
*/ */
function createAliasStatement(fontObj) { function createAliasStatement(fontObj) {
let { let { name, aliases } = fontObj;
name,
aliases
} = fontObj;
return aliases.map(aliasObj => { return aliases
return `.devicon-${name}-${aliasObj.alias} { .map(aliasObj => {
return `.devicon-${name}-${aliasObj.alias} {
@extend .devicon-${name}-${aliasObj.base}; @extend .devicon-${name}-${aliasObj.base};
}`; }`;
}).join(" "); })
.join(" ");
} }
/** /**
@@ -96,35 +93,35 @@ function createAliasStatement(fontObj) {
* created. * created.
*/ */
function createColorsCSS(deviconJson) { function createColorsCSS(deviconJson) {
// create the color statements for each font object // create the color statements for each font object
let statements = deviconJson.map(fontObj => { let statements = deviconJson
let { .map(fontObj => {
name, let {
versions: { name,
font: fonts versions: { font: fonts },
}, color,
color, aliases
aliases } = fontObj;
} = fontObj;
if (fonts.length === 0 || typeof(color) !== "string") { if (fonts.length === 0 || typeof color !== "string") {
console.log(`This object doesn't have a font or a color: ${name}`); console.log(`This object doesn't have a font or a color: ${name}`);
return ""; return "";
} }
// process the icons in the font attr // process the icons in the font attr
let cssClasses = fonts.map(font => `.devicon-${name}-${font}.colored`); let cssClasses = fonts.map((font) => `.devicon-${name}-${font}.colored`);
// process the icons in the aliases attr // process the icons in the aliases attr
aliases.forEach(aliasObj => { aliases.forEach(aliasObj => {
cssClasses.push(`.devicon-${name}-${aliasObj["alias"]}.colored`); cssClasses.push(`.devicon-${name}-${aliasObj["alias"]}.colored`);
}); });
return `${cssClasses.join(",")}{color: ${color}}`; return `${cssClasses.join(",")}{color: ${color}}`;
}).join(" "); })
.join(" ");
let cssPath = path.join(__dirname, colorsCSSName); let cssPath = path.join(__dirname, colorsCSSName);
return fsPromise.writeFile(cssPath, statements, "utf8"); return fsPromise.writeFile(cssPath, statements, "utf8");
} }
/** /**
@@ -132,25 +129,20 @@ function createColorsCSS(deviconJson) {
* and the devicon.min.scss. * and the devicon.min.scss.
*/ */
function cleanUp() { function cleanUp() {
let fileNames = [ let fileNames = [aliasSCSSName, colorsCSSName, finalMinSCSSName];
aliasSCSSName,
colorsCSSName,
finalMinSCSSName,
];
return Promise.all( return Promise.all(
fileNames.map(name => { fileNames.map(name => {
try { try {
let filePath = path.join(__dirname, name); let filePath = path.join(__dirname, name);
return fsPromise.unlink(filePath); return fsPromise.unlink(filePath);
} catch(e) { } catch (e) {
console.log(e); console.log(e);
} }
}) })
); );
} }
//////// Update SVG Task //////// //////// Update SVG Task ////////
/** /**
* Update the svg by optimizing it * Update the svg by optimizing it
@@ -160,13 +152,16 @@ function cleanUp() {
* This must be passed through the commandline arguments. * This must be passed through the commandline arguments.
*/ */
function optimizeSvg() { function optimizeSvg() {
let svgGlob = JSON.parse(yargs.argv.svgFiles) let svgGlob = JSON.parse(yargs.argv.svgFiles);
console.log("Optimizing these files: ", svgGlob) console.log("Optimizing these files: ", svgGlob);
return gulp.src(svgGlob) return gulp
.src(svgGlob)
.pipe(svgmin(configOptionCallback)) .pipe(svgmin(configOptionCallback))
.pipe(gulp.dest(file => { .pipe(
return file.base gulp.dest(file => {
})) return file.base;
})
);
} }
/** /**
@@ -182,7 +177,7 @@ function configOptionCallback(file) {
prefixIds: { prefixIds: {
prefix: file.stem, // add file name to ids prefix: file.stem, // add file name to ids
delim: "-" delim: "-"
} },
}, },
{ {
removeViewBox: false // keep viewbox removeViewBox: false // keep viewbox
@@ -191,10 +186,9 @@ function configOptionCallback(file) {
removeDimensions: true // remove height and width removeDimensions: true // remove height and width
} }
] ]
} };
} }
exports.updateCss = createDeviconMinCSS; exports.updateCss = createDeviconMinCSS;
exports.clean = cleanUp; exports.clean = cleanUp;
exports.optimizeSvg = optimizeSvg; exports.optimizeSvg = optimizeSvg;