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

Added a cleanUp() and an npm task to run the gulp task

This commit is contained in:
Thomas Bui
2020-09-14 10:19:34 -07:00
parent 276f7aeafc
commit a059bad40f
3 changed files with 54 additions and 10 deletions

View File

@@ -7,21 +7,35 @@ sass.compiler = require('sass')
const fsPromise = require('fs').promises; const fsPromise = require('fs').promises;
const path = require("path"); const path = require("path");
// global const
// production
// const deviconJSONName = "devicon.json";
// const aliasSCSSName = "devicon-alias.scss";
// const colorsCSSName = "devicon-colors.css";
// const finalMinSCSSName = "devicon.min.scss";
// testing
const deviconJSONName = "newDevicon.json";
const aliasSCSSName = "alias.scss";
const colorsCSSName = "colors.css";
const finalMinSCSSName = "min.scss";
/** /**
* Create the devicon.min.css by creating needed * Create the devicon.min.css by creating needed
* css files and compiling 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, "min.scss"); 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 \"alias\";@use \"colors\";"; const fileContent = "@use \"alias\";@use \"colors\";";
await fsPromise.writeFile(deviconMinPath, fileContent, "utf8"); await fsPromise.writeFile(deviconMinPath, fileContent, "utf8");
return gulp.src("min.scss")
return gulp.src(finalMinSCSSName)
.pipe(sass.sync({"outputStyle": "compressed"}).on('error', sass.logError)) .pipe(sass.sync({"outputStyle": "compressed"}).on('error', sass.logError))
.pipe(gulp.dest('./css')); .pipe(gulp.dest('./'));
} }
/** /**
@@ -31,7 +45,7 @@ async function createDeviconMinCSS() {
async function createCSSFiles() { async function createCSSFiles() {
const deviconJson = JSON.parse( const deviconJson = JSON.parse(
await fsPromise.readFile( await fsPromise.readFile(
path.join(__dirname, "newDevicon.json"), "utf8" path.join(__dirname, deviconJSONName), "utf8"
) )
); );
@@ -60,7 +74,7 @@ function createAliasSCSS(deviconJson) {
// createAliasesStatement(str, deviconJson)); // createAliasesStatement(str, 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, "alias.scss"); let sassPath = path.join(__dirname, aliasSCSSName);
return fsPromise.writeFile(sassPath, sass, "utf8"); return fsPromise.writeFile(sassPath, sass, "utf8");
} }
@@ -104,15 +118,43 @@ function createColorsCSS(deviconJson) {
color color
} = fontObj; } = fontObj;
if (fonts.length === 0 || typeof(color) !== "string") {
console.log(name);
return "";
}
// loop through the fonts and create css classes // loop through the fonts and create css classes
let cssClasses = fonts.map(font => `.devicon-${name}-${font}`); let cssClasses = fonts.map(font => `.devicon-${name}-${font}`);
return `${cssClasses.join(",")}{color: ${color}}`; return `${cssClasses.join(",")}{color: ${color}}`;
}).join(" "); }).join(" ");
let cssPath = path.join(__dirname, "colors.css"); let cssPath = path.join(__dirname, colorsCSSName);
return fsPromise.writeFile(cssPath, statements, "utf8"); return fsPromise.writeFile(cssPath, statements, "utf8");
} }
/**
* Remove the devicon-alias.scss, devicon-colors.css,
* and the devicon.min.scss.
*/
function cleanUp() {
let fileNames = [
aliasSCSSName,
colorsCSSName,
finalMinSCSSName,
];
return Promise.all(
fileNames.map(name => {
try {
let filePath = path.join(__dirname, name);
return fsPromise.unlink(filePath);
} catch(e) {
console.log("err was catch here");
console.log(e);
}
})
);
}
/** /**
* Concat the devicon.css, the devicon-aias.css and the * Concat the devicon.css, the devicon-aias.css and the
* devicon-colors.css together. Pipe the result into * devicon-colors.css together. Pipe the result into
@@ -135,8 +177,9 @@ function minify() {
.pipe(gulp.dest('./')) .pipe(gulp.dest('./'))
} }
exports.concat = concat; exports.concat = concat;
exports.minify = minify; exports.minify = minify;
exports.updateCss = createDeviconMinCSS; exports.updateCss = createDeviconMinCSS;
exports.clean = cleanUp;
exports.test = gulp.series(createDeviconMinCSS, cleanUp);
exports.default = gulp.series(concat, minify); exports.default = gulp.series(concat, minify);

1
min.css Normal file

File diff suppressed because one or more lines are too long

View File

@@ -4,8 +4,8 @@
"description": "Programming related icons collection", "description": "Programming related icons collection",
"main": "devicon.min.css", "main": "devicon.min.css",
"scripts": { "scripts": {
"test": "gulp updateCss", "test": "gulp test",
"build": "gulp test" "build": "gulp updateCss && gulp clean"
}, },
"repository": { "repository": {
"type": "git", "type": "git",