1 | const fs = require('fs');
|
2 | const autoprefixer = require('autoprefixer');
|
3 | const postcss = require('postcss');
|
4 | const sass = require('node-sass');
|
5 | const CleanCSS = require('clean-css');
|
6 |
|
7 |
|
8 | const inputCSSFile = './src/scss/phonon.scss';
|
9 | const outputDir = './dist/css';
|
10 | const outputCSSFile = `${outputDir}/phonon.css`;
|
11 | const outputSourceMapFile = `${outputCSSFile}.map`;
|
12 | const outputCSSFileMinified = `${outputDir}/phonon.min.css`;
|
13 | const outputSourceMapFileMinified = `${outputCSSFileMinified}.map`;
|
14 |
|
15 | module.exports = async function () {
|
16 | console.log('Building CSS...');
|
17 |
|
18 | try {
|
19 | const sassResult = sass.renderSync({
|
20 | file: inputCSSFile,
|
21 | sourceMap: true,
|
22 | outFile: outputCSSFile,
|
23 | });
|
24 |
|
25 |
|
26 | const cssResult = await postcss([ autoprefixer ]).process(sassResult.css, {
|
27 | from: outputCSSFile,
|
28 | to: outputCSSFile,
|
29 | map: { inline: false }
|
30 | });
|
31 |
|
32 | cssResult.warnings().forEach(function (warn) {
|
33 | console.warn(warn.toString());
|
34 | });
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | fs.writeFileSync(outputCSSFile, cssResult.css);
|
40 |
|
41 |
|
42 | fs.writeFileSync(outputSourceMapFile, cssResult.map);
|
43 |
|
44 |
|
45 | const output = new CleanCSS({sourceMap: true, rebaseTo: outputDir}).minify(cssResult.css, cssResult.map.toString());
|
46 |
|
47 |
|
48 | fs.writeFileSync(outputCSSFileMinified, output.styles);
|
49 |
|
50 |
|
51 | fs.writeFileSync(outputSourceMapFileMinified, output.sourceMap);
|
52 | } catch (e) {
|
53 | console.trace(e);
|
54 | }
|
55 | }
|