Skip to content

Commit 6ca141b

Browse files
authored
Merge pull request #2 from codewithkyle/hotfix/#1-fixing-comments
Closes #1 - fixed node-sass stripping comments issue
2 parents 3a6140b + 1520e5b commit 6ca141b

File tree

2 files changed

+80
-42
lines changed

2 files changed

+80
-42
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Fixed
11+
12+
- No longer using `compressed` output because it was stripping comments needed to temporarily disable purgeCSS
13+
- CSSMonster wasn't using the `minify` boolean provided in the config file
14+
1015
## [0.1.0] - 2020-01-11
1116

1217
### Added

cssmonster.js

Lines changed: 75 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,15 @@ class CSSMonster {
150150
}
151151
}
152152

153+
/** Minify */
154+
if (typeof config.minify !== "undefined") {
155+
if (typeof config.minify === "boolean") {
156+
this.config.minify = config.minify;
157+
} else {
158+
reject("Incorrect configuration: minify must be a boolean.");
159+
}
160+
}
161+
153162
/** Set values based on env */
154163
if (this.config.env === "dev" || this.config.env === "development") {
155164
this.config.minify = false;
@@ -199,38 +208,20 @@ class CSSMonster {
199208
copyCSS(files) {
200209
return new Promise((resolve, reject) => {
201210
if (!files.length) {
202-
resolve();
211+
resolve(files);
203212
}
204-
let moved = 0;
213+
const movedFiles = [];
205214
for (let i = 0; i < files.length; i++) {
206215
const filename = files[i].replace(/(.*\/)|(.*\\)/, "");
207-
if (this.config.minify) {
208-
minify(files[i])
209-
.then(css => {
210-
fs.writeFile(`${this.tempDir}/${filename}`, css, error => {
211-
if (error) {
212-
reject(error);
213-
}
214-
moved++;
215-
if (moved === files.length) {
216-
resolve();
217-
}
218-
});
219-
})
220-
.catch(error => {
221-
reject(error);
222-
});
223-
} else {
224-
fs.copyFile(files[i], `${this.tempDir}/${filename}`, error => {
225-
if (error) {
226-
reject(error);
227-
}
228-
moved++;
229-
if (moved === files.length) {
230-
resolve();
231-
}
232-
});
233-
}
216+
fs.copyFile(files[i], `${this.tempDir}/${filename}`, error => {
217+
if (error) {
218+
reject(error);
219+
}
220+
movedFiles.push(`${this.tempDir}/${filename}`);
221+
if (movedFiles.length === files.length) {
222+
resolve(movedFiles);
223+
}
224+
});
234225
}
235226
});
236227
}
@@ -274,15 +265,15 @@ class CSSMonster {
274265
compileSCSS(files) {
275266
return new Promise((resolve, reject) => {
276267
if (!files.length) {
277-
resolve();
268+
resolve(files);
278269
}
279-
let compiled = 0;
270+
const compiledFiles = [];
280271
for (let i = 0; i < files.length; i++) {
281272
const file = files[i];
282273
sass.render(
283274
{
284275
file: file,
285-
outputStyle: this.config.minify ? "compressed" : "expanded",
276+
outputStyle: "expanded",
286277
},
287278
(error, result) => {
288279
if (error) {
@@ -295,9 +286,9 @@ class CSSMonster {
295286
if (error) {
296287
reject("Something went wrong saving the file" + error);
297288
}
298-
compiled++;
299-
if (compiled === files.length) {
300-
resolve();
289+
compiledFiles.push(newFile);
290+
if (compiledFiles.length === files.length) {
291+
resolve(compiledFiles);
301292
}
302293
});
303294
} else {
@@ -310,6 +301,41 @@ class CSSMonster {
310301
});
311302
}
312303

304+
minifyCSSFiles() {
305+
return new Promise((resolve, reject) => {
306+
glob(`${this.tempDir}/*.css`, (error, files) => {
307+
if (error) {
308+
reject(error);
309+
} else if (!files.length || !this.config.minify) {
310+
resolve();
311+
}
312+
let minified = 0;
313+
for (let i = 0; i < files.length; i++) {
314+
minify(files[i])
315+
.then(css => {
316+
fs.unlink(files[i], error => {
317+
if (error) {
318+
reject(error);
319+
}
320+
fs.writeFile(files[i], css, error => {
321+
if (error) {
322+
reject(error);
323+
}
324+
minified++;
325+
if (minified === files.length) {
326+
resolve();
327+
}
328+
});
329+
});
330+
})
331+
.catch(error => {
332+
reject(error);
333+
});
334+
}
335+
});
336+
});
337+
}
338+
313339
commenceThePurge() {
314340
return new Promise((resolve, reject) => {
315341
const purgeCSSConfig = this.config.purgeCSS;
@@ -322,7 +348,7 @@ class CSSMonster {
322348
purgeCSSConfig.css = [`${this.tempDir}/**/*.css`];
323349
const purgeCss = new Purgecss(purgeCSSConfig);
324350
const purgecssResult = purgeCss.purge();
325-
let purged = 0;
351+
const purgedFiles = [];
326352
purgecssResult.forEach(result => {
327353
fs.unlink(result.file, error => {
328354
if (error) {
@@ -332,9 +358,9 @@ class CSSMonster {
332358
if (error) {
333359
reject(error);
334360
}
335-
purged++;
336-
if (purged === purgecssResult.length) {
337-
resolve();
361+
purgedFiles.push(result.file);
362+
if (purgedFiles.length === purgecssResult.length) {
363+
resolve(purgedFiles);
338364
}
339365
});
340366
});
@@ -377,14 +403,14 @@ class CSSMonster {
377403
spinner.text = "Managing CSS";
378404
let cssFiles = await this.getCSSFiles();
379405
cssFiles = await this.removeIgnored(cssFiles);
380-
await this.copyCSS(cssFiles);
406+
const copiedCSSFiles = await this.copyCSS(cssFiles);
381407

382408
/** Handle SCSS */
383409
spinner.text = "Collecting SCSS";
384410
let scssFiles = await this.getSCSSFiles();
385411
scssFiles = await this.removeIgnored(scssFiles);
386-
spinner.text = "Compiling CSS";
387-
await this.compileSCSS(scssFiles);
412+
spinner.text = "Compiling SCSS";
413+
const compiledFiles = await this.compileSCSS(scssFiles);
388414

389415
/** Normalize */
390416
await this.normalizeCSS();
@@ -395,6 +421,12 @@ class CSSMonster {
395421
await this.commenceThePurge();
396422
}
397423

424+
/** Handle Minify */
425+
if (this.config.minify) {
426+
spinner.text = "Minifying CSS";
427+
await this.minifyCSSFiles();
428+
}
429+
398430
/** Deliver CSS */
399431
spinner.text = "Delivering CSS";
400432
await this.deliverCSS();
@@ -406,6 +438,7 @@ class CSSMonster {
406438
spinner.succeed("CSSMonster");
407439
process.exit(0);
408440
} catch (error) {
441+
console.log(error);
409442
spinner.fail(error);
410443
console.log("\n");
411444
process.exit(1);

0 commit comments

Comments
 (0)