Skip to content

Commit f37cec1

Browse files
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>
1 parent 3138687 commit f37cec1

1 file changed

Lines changed: 95 additions & 101 deletions

File tree

gulpfile.js

Lines changed: 95 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
var gulp = require('gulp');
2-
const svgmin = require("gulp-svgmin")
3-
const sass = require('gulp-sass');
4-
sass.compiler = require('sass')
5-
const yargs = require("yargs")
6-
const fsPromise = require('fs').promises;
1+
const gulp = require("gulp");
2+
const svgmin = require("gulp-svgmin");
3+
const sass = require("gulp-sass");
4+
sass.compiler = require("sass");
5+
const yargs = require("yargs");
6+
const fsPromise = require("fs").promises;
77
const path = require("path");
88

99
// global const
@@ -19,34 +19,33 @@ const finalMinSCSSName = "devicon.min.scss";
1919
* css files and compiling them together using Sass.
2020
*/
2121
async function createDeviconMinCSS() {
22-
await createCSSFiles();
23-
24-
let deviconMinPath = path.join(__dirname, finalMinSCSSName);
25-
// recall that devicon-alias.scss imported the devicon.css => don't need
26-
// to reimport that file.
27-
const fileContent = `@use "${aliasSCSSName}";@use "${colorsCSSName}";`;
28-
await fsPromise.writeFile(deviconMinPath, fileContent, "utf8");
29-
30-
return gulp.src(finalMinSCSSName)
31-
.pipe(sass.sync({"outputStyle": "compressed"}).on('error', sass.logError))
32-
.pipe(gulp.dest('./'));
22+
await createCSSFiles();
23+
24+
let deviconMinPath = path.join(__dirname, finalMinSCSSName);
25+
// recall that devicon-alias.scss imported the devicon.css => don't need
26+
// to reimport that file.
27+
const fileContent = `@use "${aliasSCSSName}";@use "${colorsCSSName}";`;
28+
await fsPromise.writeFile(deviconMinPath, fileContent, "utf8");
29+
30+
return gulp
31+
.src(finalMinSCSSName)
32+
.pipe(sass.sync({ outputStyle: "compressed" }).on("error", sass.logError))
33+
.pipe(gulp.dest("./"));
3334
}
3435

3536
/**
3637
* Create the devicon-alias.scss and the
3738
* devicon-colors.css from the devicon.json.
3839
*/
3940
async function createCSSFiles() {
40-
const deviconJson = JSON.parse(
41-
await fsPromise.readFile(
42-
path.join(__dirname, deviconJSONName), "utf8"
43-
)
44-
);
45-
46-
await Promise.all([
47-
createAliasSCSS(deviconJson),
48-
createColorsCSS(deviconJson)
49-
])
41+
const deviconJson = JSON.parse(
42+
await fsPromise.readFile(path.join(__dirname, deviconJSONName), "utf8")
43+
);
44+
45+
await Promise.all([
46+
createAliasSCSS(deviconJson),
47+
createColorsCSS(deviconJson)
48+
]);
5049
}
5150

5251
/**
@@ -55,123 +54,119 @@ async function createCSSFiles() {
5554
* This is due to sass's ability to extend classes => Make it easier
5655
* to create aliases classes.
5756
* @param {Object} deviconJson, the object read from the
58-
* devicon.json file.
57+
* devicon.json file.
5958
* @return a Promise that'll resolve when the devicon-alias.scss is
6059
* created.
6160
*/
6261
function createAliasSCSS(deviconJson) {
63-
let statements = deviconJson.map(createAliasStatement).join(" ");
64-
let sass = `@use "devicon";${statements}`;
65-
let sassPath = path.join(__dirname, aliasSCSSName);
66-
return fsPromise.writeFile(sassPath, sass, "utf8");
62+
let statements = deviconJson.map(createAliasStatement).join(" ");
63+
let sass = `@use "devicon";${statements}`;
64+
let sassPath = path.join(__dirname, aliasSCSSName);
65+
return fsPromise.writeFile(sassPath, sass, "utf8");
6766
}
6867

69-
7068
/**
71-
* Create the aliases statement by searching for the
69+
* Create the aliases statement by searching for the
7270
* techname in the statement and finding its aliases in
7371
* the deviconJson.
7472
* @param {Object} fontObj, a devicon font object.
7573
* @return a string representing a css statement of the
7674
* devicon-alias.scss.
7775
*/
7876
function createAliasStatement(fontObj) {
79-
let {
80-
name,
81-
aliases
82-
} = fontObj;
77+
let { name, aliases } = fontObj;
8378

84-
return aliases.map(aliasObj => {
85-
return `.devicon-${name}-${aliasObj.alias} {
79+
return aliases
80+
.map(aliasObj => {
81+
return `.devicon-${name}-${aliasObj.alias} {
8682
@extend .devicon-${name}-${aliasObj.base};
8783
}`;
88-
}).join(" ");
84+
})
85+
.join(" ");
8986
}
9087

9188
/**
9289
* Create a colors css file in the root dir based on the deviconJson.
9390
* @param {Object} deviconJson, the object read from the
94-
* devicon.json file.
91+
* devicon.json file.
9592
* @return a Promise that'll resolve when the devicon-alias.scss is
9693
* created.
9794
*/
9895
function createColorsCSS(deviconJson) {
99-
// create the color statements for each font object
100-
let statements = deviconJson.map(fontObj => {
101-
let {
102-
name,
103-
versions: {
104-
font: fonts
105-
},
106-
color,
107-
aliases
108-
} = fontObj;
109-
110-
if (fonts.length === 0 || typeof(color) !== "string") {
111-
console.log(`This object doesn't have a font or a color: ${name}`);
112-
return "";
113-
}
114-
115-
// process the icons in the font attr
116-
let cssClasses = fonts.map(font => `.devicon-${name}-${font}.colored`);
117-
118-
// process the icons in the aliases attr
119-
aliases.forEach(aliasObj => {
120-
cssClasses.push(`.devicon-${name}-${aliasObj["alias"]}.colored`);
121-
});
122-
123-
return `${cssClasses.join(",")}{color: ${color}}`;
124-
}).join(" ");
125-
126-
let cssPath = path.join(__dirname, colorsCSSName);
127-
return fsPromise.writeFile(cssPath, statements, "utf8");
96+
// create the color statements for each font object
97+
let statements = deviconJson
98+
.map(fontObj => {
99+
let {
100+
name,
101+
versions: { font: fonts },
102+
color,
103+
aliases
104+
} = fontObj;
105+
106+
if (fonts.length === 0 || typeof color !== "string") {
107+
console.log(`This object doesn't have a font or a color: ${name}`);
108+
return "";
109+
}
110+
111+
// process the icons in the font attr
112+
let cssClasses = fonts.map((font) => `.devicon-${name}-${font}.colored`);
113+
114+
// process the icons in the aliases attr
115+
aliases.forEach(aliasObj => {
116+
cssClasses.push(`.devicon-${name}-${aliasObj["alias"]}.colored`);
117+
});
118+
119+
return `${cssClasses.join(",")}{color: ${color}}`;
120+
})
121+
.join(" ");
122+
123+
let cssPath = path.join(__dirname, colorsCSSName);
124+
return fsPromise.writeFile(cssPath, statements, "utf8");
128125
}
129126

130127
/**
131-
* Remove the devicon-alias.scss, devicon-colors.css,
128+
* Remove the devicon-alias.scss, devicon-colors.css,
132129
* and the devicon.min.scss.
133130
*/
134131
function cleanUp() {
135-
let fileNames = [
136-
aliasSCSSName,
137-
colorsCSSName,
138-
finalMinSCSSName,
139-
];
140-
141-
return Promise.all(
142-
fileNames.map(name => {
143-
try {
144-
let filePath = path.join(__dirname, name);
145-
return fsPromise.unlink(filePath);
146-
} catch(e) {
147-
console.log(e);
148-
}
149-
})
150-
);
132+
let fileNames = [aliasSCSSName, colorsCSSName, finalMinSCSSName];
133+
134+
return Promise.all(
135+
fileNames.map(name => {
136+
try {
137+
let filePath = path.join(__dirname, name);
138+
return fsPromise.unlink(filePath);
139+
} catch (e) {
140+
console.log(e);
141+
}
142+
})
143+
);
151144
}
152145

153-
154146
//////// Update SVG Task ////////
155147
/**
156-
* Update the svg by optimizing it
148+
* Update the svg by optimizing it
157149
* and prefixing its ids so it's unique across the repo.
158-
*
150+
*
159151
* This requires a json list of svg file names to update.
160152
* This must be passed through the commandline arguments.
161153
*/
162154
function optimizeSvg() {
163-
let svgGlob = JSON.parse(yargs.argv.svgFiles)
164-
console.log("Optimizing these files: ", svgGlob)
165-
return gulp.src(svgGlob)
155+
let svgGlob = JSON.parse(yargs.argv.svgFiles);
156+
console.log("Optimizing these files: ", svgGlob);
157+
return gulp
158+
.src(svgGlob)
166159
.pipe(svgmin(configOptionCallback))
167-
.pipe(gulp.dest(file => {
168-
return file.base
169-
}))
160+
.pipe(
161+
gulp.dest(file => {
162+
return file.base;
163+
})
164+
);
170165
}
171166

172167
/**
173168
* Create a config option for each file.
174-
* @param {Object} file - Gulp Vinyl instance of the file
169+
* @param {Object} file - Gulp Vinyl instance of the file
175170
* being processed.
176171
* @returns a SVGO config object.
177172
*/
@@ -182,7 +177,7 @@ function configOptionCallback(file) {
182177
prefixIds: {
183178
prefix: file.stem, // add file name to ids
184179
delim: "-"
185-
}
180+
},
186181
},
187182
{
188183
removeViewBox: false // keep viewbox
@@ -191,10 +186,9 @@ function configOptionCallback(file) {
191186
removeDimensions: true // remove height and width
192187
}
193188
]
194-
}
189+
};
195190
}
196191

197-
198192
exports.updateCss = createDeviconMinCSS;
199193
exports.clean = cleanUp;
200194
exports.optimizeSvg = optimizeSvg;

0 commit comments

Comments
 (0)